根据文件夹结构添加代码行 - 预编译器?

时间:2017-05-14 19:30:48

标签: angular directory angular2-directives precompile

我有不同类型的对象。不过,我想在我的一个Angular2组件中显示所有类型。 这是我用于此的代码:

in for-loop:
<div [ngSwitch]="Type">
    <c-test *ngSwitchCase="'Test'"></c-test>
    <c-test2 *ngSwitchCase="'Test2'"></c-test2>
    <etc>
</div>

随着时间的推移,我的应用程序可以扩展,添加新的&#34;类型&#34;对象由于我在不同的地方使用上面的代码,我不想为每个添加的类型在所有这些地方添加一行。有没有办法使用类似于C ++预编译器的东西来覆盖我的文件夹结构并相应地添加这些行?

示例:假设我有以下文件夹结构。

Objects
|- TypeA
|- TypeB
|- etc

在我的代码中,我会有类似的东西:

<div [ngSwitch]="Type">
    <precompile *ngFor="some looping through folders">    
        <"c-$FoundFolder" *ngSwitchCase="'$FoundFolder'"><"c-$FoundFolder">
    </precompile>
</div>

导致:

<div [ngSwitch]="Type">
    <c-TypeA *ngSwitchCase="'TypeA'"></c-TypeA>
    <c-TypeB *ngSwitchCase="'TypeB'"></c-TypeB>
    <etc *ngSwitchCase="'etc'"></c-etc>
</div>

我知道我想要的东西在这种形式中不存在,但是有没有办法实现类似的东西,如果是的话,怎么样呢?

1 个答案:

答案 0 :(得分:1)

以下方法并不完全符合您的要求。但是,基本打算是根据添加到应用程序的新组件,在未改变渲染视图的情况下动态加载新组件。关于角度网站上有一篇很好的文章:

https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html

就是这样,对于新的组件声明,它将保持相同,只需要在 entryComponent 中为在声明新组件的同一模块文件中添加的每个新组件添加一个额外的条目:

entryComponents: [ HeroJobAdComponent, HeroProfileComponent ],