2017-02-02 152 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