Angular 动态组件:动态插入X类型的组件
有两件事我想实现。两者都需要巧妙地使用组件 首先,一个关于组件绑定的问题:在我所看到的每一篇文章中,模板中都使用了一个指令标记,以便以后绑定组件。然而,由于我的两个问题,我不能预先将指令放入模板中,而是需要动态地这样做Angular 动态组件:动态插入X类型的组件,angular,typescript,dynamic,binding,load,Angular,Typescript,Dynamic,Binding,Load,有两件事我想实现。两者都需要巧妙地使用组件 首先,一个关于组件绑定的问题:在我所看到的每一篇文章中,模板中都使用了一个指令标记,以便以后绑定组件。然而,由于我的两个问题,我不能预先将指令放入模板中,而是需要动态地这样做 我有一张“事情”的清单。然而,“事物”只是父对象,它有很多子对象——这意味着有多种类型的事物,每种都有不同的价值。这让我为每件事都创建了一个组件:每个组件都有自己的模板。 但是,我还想显示这些内容的列表。不过,我事先并不知道它们:我正在从服务器获取它们。在得到数据之前,我不知道它
TL;DR我如何动态绑定组件,而不必为其各自的类型设置适当数量的绑定?当组件信息来自服务器时,您可以做一件事: 您仍然需要将所有组件放入父模板中,但只显示服务器返回的内容:
<div *ngFor="let dynamic of fromServer" [ngSwitch]="dynamic .id">
<thing-a *ngSwitchCase="'thinga'" [data]="dynamic"></thing-a>
<thing-b *ngSwitchCase="'thingb'" [data]="dynamic"></thing-b>
<thing-c *ngSwitchCase="'thingc'" [data]="dynamic"></thing-c>
<thing-d *ngSwitchCase="'thingd'" [data]="dynamic"></thing-d>
<thing-e *ngSwitchCase="'thinge'" [data]="dynamic"></thing-e>
<thing-f *ngSwitchCase="'thingf'" [data]="dynamic"></thing-f>
</div>
[
{ id : "thinga" }
{ id : "thingd" }
{ id : "thingf" }
]
然后只显示这3个
您还可以根据服务器返回数据的顺序对组件进行动态排序
编辑:
如果服务器返回thinga
3次,将显示3次
编辑2:
例如:
每个
thinga
组件都将获得自己的数据,而您却没有,因为没有办法。包含一段代码,演示如何强制读取和写入值。我不知道你说的2是什么意思。您需要向应用程序静态添加组件。组件不知道您何时构建的应用程序无法添加。@GünterZöchbauer感谢您的回复。然而,人们将如何着手解决我目前面临的问题呢?大约2:我会在一分钟内编辑,让它更清楚。另外:并不是Angular不知道我要添加的组件,而是我事先定义了它们。我只是不知道应该事先使用哪些组件。所以,基本上:我定义了组件X,Y,Z。服务器现在告诉我“将X,Z,X,X,Y,Z,Y按照我给你的值的顺序放在列表中”。这就是我在第一条评论中链接到的答案。非常感谢你的回答。若一件东西显示了3次,它会显示不同的数据吗?如果是这样,这可能会以一种超级简单的方式解决我所有的问题!太棒了,非常感谢你。这正是我想要的,而且非常简单。我很快就会试试的。
[
{ id : "thinga", title: "Yes"}
{ id : "thinga", title: "No" }
{ id : "thinga", title: "Maybe" }
]