2017-02-02 45 views
0

有沒有辦法訂閱Observable這是一個@Input訂閱可觀察輸入

例如:

export class MyComponent implements OnInit { 
    @Input() results: Observable<string[]>; 
    constructor() { 
    this.results.subscribe(value => ...); 
    }  
} 

在這個例子中,我不能同意可觀察的,因爲它是null ...

+1

首先...錯字? 'substribe'? – Alex

+0

@ AJT_82你是對的,修好了。 – Hatsjoem

回答

3

你應該實現OnChanges和訂閱輸入時,它的變化。

export class MyComponent implements OnChanges { 
    @Input() results: Observable<string[]>; 

    constructor() { } 

    ngOnChanges(changes){ 
     if(changes["results"] && this.results){ 
      this.results.subscribe(value => ...); 
     } 
    } 
} 

這將允許您訂閱可觀察一旦有貨,並重新訂閱它隨時可觀察到的變化參考。根據您的使用情況,您可能需要考慮從舊實例取消訂閱。

+0

這工作正常:)。不知道「OnChanges」,所以我會查看文檔以獲取更多信息。我試圖創建一個自己的typeahead來了解角度。 – Hatsjoem