我已经看到了一些如何在这里和周围的网络做到这一点的例子,但是当我尝试它时,我的子组件插入DOM作为目标组件。 这里被标记我的工作:动态插入角度组件作为另一个组件的孩子
<div #target></div>
<button (click)="AddTile()">Add Tile</button>
这里是父组件代码:
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);
}
}
这段代码的输出是:
<div #target></div>
<tile-component></tile-component>
<tile-component></tile-component>
的预期结果是:
<div #target>
<tile-component></tile-component>
<tile-component></tile-component>
</div>
您打算使用基于用户操作的不同动态组件吗? – Aravind
不,相同的组件。它也不会基于用户操作,但是我需要在运行时动态添加不同数量的这些组件。我在这里使用按钮作为POC的一部分。 – Lazloman