Estoy tratando de construir un proyecto que combine Angular 2 y Twig. En un nivel alto, la aplicación angular sería básicamente un generador de sitios. En el proyecto hay una carpeta de vistas que contendría varias plantillas de sitios diferentes, que son archivos Twig. Uno de los componentes solicita un archivo JSON, que proporciona información específica del sitio, como el título, el encabezado, el contenido, etc. También especifica algún tipo de variable de configuración que le dice a Angular qué plantilla extraer. Esa plantilla se combina con datos en el JSON y se compila el sitio. ¿Algo como esto suena posible?
Encontré este proyecto y el desarrollador lo actualizó amablemente para admitir la última versión de Angular. Preparé un proyecto básico con angular cli y estoy tratando de hacer que represente un archivo Twig como plantilla. Si incluyo el archivo Twig como una cadena de plantilla, funciona bien. Si lo incluyo como templateUrl así:
Componente
import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { Twig } from '@manekinekko/angular-twig'; @Twig({ selector: 'app-test', templateUrl: '../views/test.html.twig', context: { title: 'Angular2 ❤ Twig', content_1: 'blah', content_2: 'content 2' }, }) export class TestComponent implements OnInit { content_1 ='content 1'; constructor() { } ngOnInit() { } }
Modelo
{{ content_1 }}
Recibo el error de que content_1 no está definido, aunque funciona bien como una cadena de plantilla. No estoy muy seguro de lo que está pasando. Sé que tengo la plantilla en un director separado del componente. ¿Podría ser el problema? Idealmente, me gustaría que la aplicación funcionara de esa manera para poder tener todos los archivos de plantilla de sitio separados en una carpeta separada.
También doy la bienvenida a cualquier idea sobre un enfoque totalmente alternativo. ¡Gracias!
No estoy seguro si todavía busca una solución, pero encontré esto para su problema:
{{'{{' ~ aTwigVariable ~ '}}'}}
Así que tu parte de la plantilla sería
{{'{{' ~ content_1 ~ '}}'}}
Espero que esto ayude :)