Ich habe ein "Dashboard", das konfigurierte Elemente lädt. Dashboard-Vorlage hat dies:Komponenten dynamisch in ngFor hinzufügen
<div class="dash-container" [ngGrid]="gridConfig">
<div *ngFor="let box of boxes; let i = index"
[(ngGridItem)]="box.config"
(onItemChange)="updateItem(i, $event)"
(onResize)="onResize(i, $event)"
(onDrag)="onDrag(i, $event)"
(onDragStop)="onDragStop(i,$event)"
[ngClass]="box.class"
>
<div class="handle"><h4>{{box.title}}</h4></div>
<div [innerHTML]= "box.content"></div>
</div>
</div>
Jetzt wird <div [innerHTML]= "box.content"></div>
nicht funktionieren, weil Nicht-Standard-Elemente hygienisiert erhalten. Laufende neueste Angular 2.4.6 (RC 6).
Ich schaue mir die Beispiele an, die ich für dynamische Komponenten finden könnte - aber alles, was ich sehe ist, dass sie nur Komponenten zur aktuellen Komponente hinzufügen - aber ich brauche sie in einer sehr spezifischen divs wie im obigen Beispiel.
ComponentFactoryResolver
wird oft zusammen mit @ViewChild
verwendet. Aber ich kann nicht einfach tun dies in einer Schleife:
ngAfterViewInit() {
const dashWidgetsConf = this.widgetConfigs();
for (var i = 0; i < dashWidgetsConf.length; i++) {
const conf = dashWidgetsConf[i];
@ViewChild(conf.id, {read: ViewContainerRef}) var widgetTarget: ViewContainerRef;
var widgetComponent = this.componentFactoryResolver.resolveComponentFactory(UnitsComponent);
widgetTarget.createComponent(widgetComponent);
}
}
Die @viewchild gibt ‚Zierer hier nicht gültig sind‘. Wie kann ich Komponenten aus einer Conf-Liste (in einer Schleife) laden und sie in einem bestimmten Div (Divs haben #{{conf.id}}
) in meiner Komponente?
Sieht ähnlich wie http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-mit-user-click-chosen-components/36325468#36325468 mit Komponenten dynamisch erstellt wie in http gezeigt://stackoverflow.com/questions/34784778/equivalent-of-compile-in-angular-2/37044960#37044960 –
Aber in diesen Beispielen - das "Ziel" ist fest - bereits bekanntes Element definiert als @ViewChild am Anfang. Ich muss sie zu x Anzahl der Elemente mit ID-s hinzufügen, ich kann nicht in Vorlage vordefinieren. – Agony
Sie können alles in einer Vorlage einer Komponente vordefinieren, die zur Laufzeit erstellt wird, wie in der 2. Verknüpfung gezeigt - und ich meine, die gesamte Komponente wird zur Laufzeit erstellt, nicht nur dynamisch hinzugefügt. –