2016-11-08 6 views
1

ObservablesでHTTPリクエストを使用してデータベースを検索する際のAngular 2のチュートリアルに従っています。 https://angular.io/docs/ts/latest/tutorial/toh-pt6.html角2:ObservablesでHTTPリクエストを使用してデータベースを検索する

「名前で検索」を検索すると、私が参照しているチュートリアルの領域を見つけることができます。ここで

は、問題のコードです:

this.heroes = this.searchTerms 
    .debounceTime(300)  // wait for 300ms pause in events 
    .distinctUntilChanged() // ignore if next search term is same as previous 
    .switchMap(term => term // switch to new observable each time 
    // return the http search observable 
    ? this.heroSearchService.search(term) 
    // or the observable of empty heroes if no search term 
    : Observable.of<Hero[]>([])) 
    .catch(error => { 
    // TODO: real error handling 
    console.log(error); 
    return Observable.of<Hero[]>([]); 
    }); 

は、私はそれが私のアプリケーションで動作するように取得するには、このコードに適切な変更を加えることができたが、私はそれが正常に戻ったときのための機能を起動する方法を疑問に思ってあなたが探しているものが見つからないときは、それはおそらく比較的簡単ですが、私はそれを見つけ出すのに苦労しており、それを探し出す方法がかなりわかりません。

答えて

2

I am wondering how to invoke functions for when it successfully returns data and when it is unable to find what you're looking for

まだ購読する必要があります。あなたが購読するまで何も起こりません。

this.searchTerms 
    .debounceTime(300) 
    .distinctUntilChanged() 
    .switchMap(term => term 
    ? this.heroSearchService.search(term) 
    : Observable.of<Hero[]>([])) 
    .catch(error => { 
    return Observable.of<Hero[]>([]); 
    }) 
    .subscribe(heroes => { 
    this.heroes = heroes; 
    doOtherStuff(); 
    }); 

ここでは、「成功」、「エラー」、「完了」の各ケースを処理できます。サブスクライブは、それぞれ3つのコールバックをとります。

.subscribe(
    (heroes) => {}, // success 
    (error) => {}, // error 
    () => {}   // completed/always 
); 

when it is unable to find what you're looking for

購読 "成功" からheroesが空の場合だけ確認してください。

+0

これは私に次のビルドエラーを与えています: 'サブスクリプション'タイプが 'Observable 型に割り当てられません' – Brett

+0

私のアプリケーションで動作させるために行った変更の1つは、 VarietyTypeGroup []とサービスの名前を変更します。それ以外の場合はすべて同じです。 – Brett

+0

結果を割り当てることはできません。結果は、購読した後の購読です。成功コールバックでは、どのような割り当ても行う必要があります。そして、クラスメンバに配列の観測可能ではなく、ただ配列 –

関連する問題