无法在特定索引处添加组件。例如,在plunker链接下方。PlunkerAddRemoveComponents
在这里,我只能在第一时间添加特定索引中的组件。
export class AddRemoveDynamic {
idx: number = 0;
constructor(private _dcl: DynamicComponentLoader, private _e: ElementRef) { }
add() {
this._dcl.loadIntoLocation(DynamicCmp, this._e, 'location').then((ref) => {
ref.instance._ref = ref;
ref.instance._idx = this.idx++;
});
}
}
我的场景是:
- 单击"添加组件"按钮3次。它将创建3行持续
- 然后单击第二行"添加"按钮,它将创建另一行
- 再次单击相同的按钮,它将创建下一个组件行
问题是,我想在每次添加按钮行旁边创建组件。
DynamicComponentLoader
已弃用。
我创建了一个使用ViewContainerRef.createComponent()
的示例,它允许在应该添加元素的地方添加索引:
class DynamicCmp {
_ref: ComponentRef;
_idx: number;
constructor(private resolver: ComponentResolver, private location:ViewContainerRef) { }
remove() {
this._ref.dispose();
}
add1() {
this.resolver.resolveComponent(DynamicCmp).then((factory:ComponentFactory<any>) => {
let ref = this.location.createComponent(factory, 0)
ref.instance._ref = ref;
ref.instance._idx = this._idx++;
});
}
}
Plunker示例