Queremos mostrar un ejemplo de código fuente en una galería de muestras.
Tenemos archivos mecanografiados, html y HTML que queremos mostrar tal como se hace en las páginas de muestras de componentes de angular.io.
¿Sabe cómo obtener el código fuente de la ruta de un archivo mecanografiado que ya está en nuestro proyecto y renderizarlo?
para angular.io usan este componente https://github.com/angular/angular/blob/main/aio/src/app/custom-elements/code/code-example.component.ts pero con compilación y renderizado complejos , demasiado complejo... Eric
Los ejemplos de código no suelen ser código de su propia base de código.
Son más bien ejemplos de qué escribir para usar una biblioteca (o algo) que haya creado.
Por lo tanto, es una especie de obviedad: no cree un archivo .ts y cárguelo como texto, sino más bien:
O, si desea tener autocompletado en el contenido de TS
assets para que no se construya y cárguelo a través de HttpClient[...] cómo obtener el código fuente de la ruta de un archivo mecanografiado que ya está en nuestro proyecto y renderizarlo?
Puede usar la Fetch API que recuperará de forma asíncrona un archivo de su servidor.
NB El uso de la Fetch API comienza con dos operaciones asincrónicas:
Ejemplo:
const getMyTSFile = async () => { // FETCH THE FILE RESPONSE const myTSFile = await fetch('/path/to/my/typescript-file.ts'); // EXTRACT THE CONTENT FROM THE FILE (AS TEXT) const myTSFileText = await myTSFile.text(); // CREATE A NEW <CODE> ELEMENT const myTSFileElement = document.createElement('code'); // POPULATE THE THE <CODE> ELEMENT WITH THE FILE TEXT CONTENT myTSFileElement.textContent = myTSFileText; // APPEND THE <CODE> ELEMENT TO THE DOCUMENT BODY document.body.append(myTSFileElement); } getMyTSFile();Otras lecturas:
Inicialmente publiqué una pregunta aquí:
¿Cómo reemplazar raw-loader al migrar a Angular 12?
Incluimos realmente el código fuente del código base con una aplicación Angular 11 como esta:
html: require(!!raw-loader!./${files}.component.html)o
ts: require(!!raw-loader!./${files}.component)pero raw-loader desaparece cuando migramos a Angular 12. Y probé con ?raw que funciona para el archivo html:
html: require(./${files}.component.html?raw)y no para el archivo mecanografiado:
ts: require(./${files}.component?raw)la !! que evita que los cargadores no funcionen.
algunas ideas ?