Angular2:根据模型属性动态创建视图选择器?

时间:2016-10-28 20:06:41

标签: javascript templates angular typescript typescript2.0

我很长一段时间以来一直是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做事的方式缠绕我的头!

感谢您提供任何帮助!

0 个答案:

没有答案