私は外部APIへのREST呼び出しを実行するAngularサービスクラス(WeatherService)があり、searchWeatherのデータをフェッチするシナリオを打ちました) 関数。Angular 2 Subject.next Observableのリスンがエラーをスローした後に動作しない
私はコンポーネントのWeatherSearchComponentを持っています。このコンポーネントには、コンポーネントのonSearch()関数にkeyupイベントがバインドされているテンプレートの入力フィールド検索があります。基本的にTypeAhead入力フィールド。私はクラスで定義されたSubjectを持っており、onSearch()関数では次のようにsubjectのnext()関数を初期化しています。
WeatherSearchComponent:
private searchStream = new Subject<string>();
onSearch(cityName:string) {
this.searchStream
.next(cityName);
}
constructor(private _weatherService:WeatherService) {
}
ngOnInit() {
this.searchStream
.debounceTime(300)
.distinctUntilChanged()
.switchMap((input:string) => this._weatherService.searchWeatherData(input))
.subscribe(
data => this.data = data
);
}
WeatherService:
searchWeatherData(cityName: string): Observable<any> {
return this._http.get('URL')
.map(response => response.json())
.catch(error => {
console.error(error);
return Observable.throw(error.json())
});
}
REST呼び出しがエラーを失敗したか、返した場合、私が直面してる問題は、あるイムはそれをログに記録するが、件名searchStreamのライフサイクルエラーが発生し、それ以降は入力を受け付けないと終了します。私はngOnInit()メソッドでエラーを処理しようとしましたが、動作しません。
このシナリオをどのように処理するかを知りたいですか?
はい、上記の実装が機能しました。実装が本番環境で使用するのが適切で適切であるかどうかを知りたいですか?または私は何か違うべきですか? –