2017-02-02 6 views
0

Gibt es eine Möglichkeit, eine Observable zu abonnieren, die eine @Input ist?Subscriber to Observable Input

Zum Beispiel:

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

In diesem Beispiel kann ich nicht auf die beobachtbaren abonnieren, weil es null ist ...

+1

Zunächst einmal ... Tippfehler? 'Subtribe'? – Alex

+0

@ AJT_82 Sie haben Recht, behoben. – Hatsjoem

Antwort

3

Sie sollten OnChanges implementieren und mit dem Eingang abonnieren, wenn sie sich ändert.

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

    constructor() { } 

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

Dies ermöglicht es Ihnen zu den beobachtbaren zu abonnieren, sobald es verfügbar ist, und re-subscribe jederzeit dafür, dass die beobachtbaren Referenz ändert. Abhängig von Ihrem Anwendungsfall müssen Sie möglicherweise die Abmeldung von der alten Instanz in Betracht ziehen.

+0

Das funktioniert gut :). Ich kannte "OnChanges" nicht, daher werde ich mir die Dokumente für weitere Informationen ansehen. Ich versuche eine eigene Typeahead zu kreieren, um eckig kennenzulernen. – Hatsjoem