Angular 2和Twig网站构建器

时间:2017-04-28 22:04:54

标签: angular typescript twig

我正在尝试构建一个结合Angular 2和Twig的项目。在高级别,角度应用程序基本上是站点生成器。在项目中有一个视图文件夹,其中包含许多不同的网站模板,这些模板是Twig文件。其中一个组件发出JSON文件请求,该文件提供特定的站点信息,如标题,标题,内容等。它还指定了某种配置变量,告诉Angular要提取哪个模板。该模板与JSON中的数据相结合,并编译该站点。这样的事听起来有可能吗?

我发现了这个project,开发人员对它进行了更新,以支持最新版本的Angular。我用角度cli组合了一个基本的project,并试图让它将Twig文件渲染为模板。如果我将Twig文件包含为模板字符串,则渲染效果很好。如果我将它包含为templateUrl,就像这样:

组件

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() {
    }

}

模板

{{ content_1 }}

我收到的错误是content_1未定义,但它可以正常用作模板字符串。我不太清楚发生了什么事。我知道我在一个单独的导演中有模板而不是组件。这可能是问题吗?理想情况下,我希望应用程序以这种方式工作,以便我可以将所有单独的网站模板文件放在单独的文件夹中。

我对任何完全替代方法的想法表示欢迎。谢谢!

1 个答案:

答案 0 :(得分:0)

不确定您是否仍在搜索解决方案,但我发现了您的问题:

{{'{{' ~ aTwigVariable ~ '}}'}}

所以你的模板部分将是

{{'{{' ~ content_1 ~ '}}'}}

希望这会有所帮助:)