2017-04-27 86 views
0

我产生一个构成元素动态Angular 2 - 为什么动态组件的绑定被破坏?

var componentFactory = this.componentFactoryResolver.resolveComponentFactory(TransportOrderComponent); 

let dynamicComponent = this.container.createComponent(componentFactory); 

动态成分,它中的属性的绑定不工作。 (例如ngIf,按一下按钮,...。)

组件的HTML:

<button (click)="show = !show">toggle: {{show ? 'hide' : 'show'}}</button> 
<br> 
<div *ngIf="show"> Text to show</div> 

组件打字稿:

... 
export class TransportOrderComponent { 
    show: boolean = true; 
} 

静态组件一切工作正常。如果我添加了DYN组件,然后单击静态组件按钮动态成分含量变化一次

enter image description here

海尔是plunkr

回答

2

那是因为你在外面运行的代码角度带。

这应该为你

constructor(private zone: NgZone, ...) {} 

addTransportOrderComponent(jqContainer: any) { 
    this.zone.run(() => { 
    let componentFactory = this.componentFactoryResolver.resolveComponentFactory(TransportOrderComponent); 
    let dynamicComponent = this.container.createComponent(componentFactory); 
    }) 
} 

Modified Plunker

+0

非常感谢你<3工作 – Julian