在我的項目中,我想動態地將組件作爲父容器的子項插入。下面是代碼插入一個動態組件作爲DOM容器的子項angular2
import { Component, ViewContainerRef, ComponentFactoryResolver, ViewChild } from '@angular/core';
@Component({
selector: 'parent',
template: `
<ng-container>
<child1></child1>
<button (click)="me()">me</button>
</ng-container>
`
})
export class ParentComponent {
componentRef:any;
constructor(private componentFactoryResolver: ComponentFactoryResolver, private viewContainerRef: ViewContainerRef) { }
me() {
const factory = this.componentFactoryResolver.resolveComponentFactory(Child2Component);
this.componentRef = this.viewContainerRef.createComponent(factory);
// this.componentRef._component.role = role;
this.componentRef.changeDetectorRef.detectChanges();
}
}
在上面的代碼,則存在缺省情況下包含child1
部件parent
組件。有一個按鈕可插入另一個組件(child2
)。但是這是作爲父組件的兄弟插入的。
<parent>
<child1></child1>
</parent>
<child2></child2>
我想插入它作爲父組件的孩子。
<parent>
<child1></child1>
<child2></child2>
</parent>
在這種情況下,我只能插入一個孩子,對嗎?如果我必須插入多個孩子呢? –
@SunilGarg我不知道你是什麼意思,但每次你點擊'我()',它會追加一個新的組件。你可以很容易地用一個國旗檢查這個。 – echonax
謝謝!!這工作正常。我可以使用'@ input'和'@ output'屬性與父項進行通信嗎? –