2017-07-08 53 views
0

我有一個組件,其dataModel作爲輸入,調用構造函數時dataModel未定義。嵌套的子組件未定義的輸入屬性

<div class="container"> 
    <dataViewer [dataModel]="data"></dataViewer> 
</div> 

組件

@Input() dataModel: DataModel; 

// .. 

constructor(private element: ElementRef) { 
    this.htmlElement = this.element.nativeElement; 
    this.selectorElement = d3.select(this.element.nativeElement); 

    if (this.dataModel== undefined) { throw 'dataModel is undefined' }; 

} 

父組件都有一個路由解析,我怎麼能保證dataViewer組件構造時dataModel設置?我是否可以延遲構建任何子組件以確保它不是未定義的?

this.route.data 
      .subscribe((data: { foo: Bar[] }) => { 
       self.foo = foo; 
      }); 
+0

父組件是否初始化dataModel?如果不是如何被初始化? – seescode

回答

0

考慮將代碼從構造函數移動到嵌套組件的ngOnChanges事件。在設置或更改dataModel屬性時會發生該事件。

您仍然需要在代碼周圍以確保在組件第一次加載時看不到未定義的代碼。