Ich habe ein paar Beispiele dafür gesehen, wie dies hier und um das Netzwerk herum gemacht wird, aber wenn ich es versuche, wird meine untergeordnete Komponente als Peer in das DOM eingefügt die Zielkomponente. Hier wird Markup Ich arbeite mit:Dynamische eckige Komponente als untergeordnetes Element einer anderen Komponente einfügen
<div #target></div>
<button (click)="AddTile()">Add Tile</button>
Hier ist die übergeordnete Komponente Code:
import { Component, ComponentFactoryResolver, ViewContainerRef, ViewChild } from '@angular/core';
import { TileComponent } from './tile/tile.component';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent{
title = 'app works!';
@ViewChild('target', { read: ViewContainerRef }) target: ViewContainerRef;
constructor(private componentFactoryResolver: ComponentFactoryResolver, private viewContainerRef: ViewContainerRef) {}
AddTile() {
const factory = this.componentFactoryResolver.resolveComponentFactory(TileComponent);
const res = this.target.createComponent(factory);
}
}
Der Ausgang dieses Codes ist:
<div #target></div>
<tile-component></tile-component>
<tile-component></tile-component>
Die erwartete Ausgabe lautet:
<div #target>
<tile-component></tile-component>
<tile-component></tile-component>
</div>
planen Sie auf Benutzeraktionen basieren unterschiedliche dynamische Komponenten zu verwenden? – Aravind
Nein, die gleiche Komponente. Es wird auch nicht auf Benutzeraktionen basieren, aber ich muss dynamisch eine variierende Anzahl dieser Komponenten zur Laufzeit hinzufügen. Ich verwende hier einen Button als Teil eines POC. – Lazloman