2017-05-10 4 views
0

Ich habe eine Subskription auf den sich ändernden Wert einer EingabeformControl und ich muss diese Werte nehmen, wie die Benutzer einen neuen Anruf tätigen. Das funktioniert, aber es fühlt sich falsch an, da ich dachte, der Punkt von Observablen wäre, die Callback-Hölle zu beseitigen. Irgendeine Hilfe?Verschachtelung abonnieren in formControl.valuesChange

constructor(private symbolSearchService: SymbolSearchService) { 
    this.symbolSearchForm = new FormControl(); 
    } 

    ngOnInit() { 
    this.symbolSearchForm.valueChanges.subscribe(
     val => { 
     this.symbolSearchService.symbolLookup(val).subscribe(
      val => console.log('val', val) 
     ) 
     } 
    ) 
    } 

Antwort

1

Sie können dies die beobachtbaren Operatoren verflachen:

this.symbolSearchForm.valueChanges 
    .mergeMap(val => this.symbolSearchService.symbolLookup(val)) 
    .subscribe(val => console.log('val', val)); 

Siehe z https://www.learnrxjs.io/operators/transformation/mergemap.html

+0

danke das funktioniert! BTW sollten Sie bearbeiten, um .mergeMap – Yeysides

+0

Sie schrieb margeMap: P – Yeysides

+0

@Yeysides ah, hoppla! Fest, danke. Beachten Sie, dass Sie Änderungen an Antworten vorschlagen können, wenn es nur einen kleinen Tippfehler gibt. – jonrsharpe