2016-04-06 97 views
2

我使用了一個只切換標籤的組件,一切正常。Angular 2單向數據綁定內部不動態加載動態加載組件

一旦我感動動態組件加載組件內部的組件,當我與功能setTab(){ this.tabInfo = true }false設置,我留下false模板當我{{ tabInfo }}打印。

爲什麼數據沒有更新?我嘗試刷新區域,它不起作用。

函數正在執行,所有的值都設置正確,我檢查了控制檯。但是更改在模板中不可見。我在構造函數中設置的是固定的,我無法改變它。

任何想法?

回答

1

如果使用loadAsRoot()你需要明確地調用變化檢測像

function onYourComponentDispose() { 
} 
let el = this.elementRef 
let reuseInjectorOrCreateNewOne = this.injector; 
this.componentLoader.loadAsRoot(YourComponent, this.elementRef, reuseInjectorOrCreateNewOne, onYourComponentDispose) 
.then((compRef: ComponentRef) => { 
    // manually include Inputs 
    compRef.instance['myInputValue'] = {res: 'randomDataFromParent'}; 
    // manually include Outputs 
    compRef.instance['myOutputValue'].subscribe(this.parentObserver) 
    // trigger change detection 
    cmpRef.location.internalElement.parentView.changeDetector.ref.detectChanges() 
    // always return in a promise 
    return compRef 
}); 

參見https://github.com/angular/angular/issues/6370#issuecomment-193896657

+0

我現在明白爲什麼是負荷根有問題的,它引用了「ID = someid」,並loadIntoLocation是使用「#someid」,它是完全不同的參考,它打破。好。 loadIntoLocation作爲未來的默認值;)。謝謝你,岡瑟。幾分鐘後會接受答案... – Teddy