我很长一段时间以来一直是C / C ++编码器,但我是Angular2和TypeScript的新手。我有一个TypeScript类(称为Node
),它具有type: string
属性,指定它是什么类型的节点。 (数据来自服务器的JSON,基本上被解析为语法树。)
我现在在视图模板中为了选择每个Node
对象的视图而做的是使用ngSwitch
来检查node.type
的值,然后为每种可能的情况使用ngSwitchCase
插入适当的选择器,例如:
<div [ngSwitch]="node.type">
<node-type-a-view *ngSwitchCase="'a'" [(node)]="node"></node-type-a-view>
<node-type-b-view *ngSwitchCase="'b'" [(node)]="node"></node-type-a-view>
<node-type-c-view *ngSwitchCase="'c'" [(node)]="node"></node-type-a-view>
<div class="debug" *ngSwitchDefault>
TODO: View for type "{{node.type}}" is missing
</div>
</div>
问题在于有超过一百种不同的节点类型,因此这将非常笨拙,非常快。 我喜欢做的事情是这样的(但显然这在Angular2中不起作用):
<node-type-{{node.type}}-view [(node)]="node"></node-type-{{node.type}}-view>
或者,使用属性选择器:
<div node-type-{{node.type}}-view [(node)]="node"></div>
是否有任何功能接近我正在寻找的东西?我不需要动态创建node-type-*-view
视图本身,只需要引用它们的模板。
另外,如果我认为这种架构完全错误,我会道歉。我仍然围绕着Angular2做事的方式缠绕我的头!
感谢您提供任何帮助!