私のサービスでsubscribeToTasks()
コールが失敗した場合はいつでも、私のコンポーネントであるsubscriptionError()
メソッドのコードが呼び出されるようにオブザーバブルを購読しています。簡単なアラート。問題は、このコールにいつでもエラーが発生するとthis.newSubscriptionFailure.next()
が呼び出されます、私は私のブラウザのコンソールで次のエラーを取得し、次のとおりです。未定義のプロパティ 'next'を読み取ることができません
未定義のプロパティを読み取ることができません。あなたはそれがメソッドの上に定義されていることをはっきりと見ることができますか?そのコードは、API呼び出しのエラーが起こるずっと前にヒットするはずです。私は過去にこのアプローチを使用していましたが、それはいつも効果がありました。唯一の違いは、
newSubscriptionFailure
定義されていませんどのように「次へ」
.next()
というサービス(同じファイル
newSubscriptionFailure
が定義されています)を呼び出しているのに対し、私は通常
.next()
を別のコンポーネントファイル。私は間違って何をしていますか?私はこれを働かせる方法、またはより良いアプローチをとることができますか?私のサービスから
コード:私のコンポーネントから
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
public subscribeToTasks(period: string, stripeToken: string): Observable<any> {
let body = JSON.stringify({ period, stripeToken });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.authHttp.post(this.apiTasks, body, options).map(response => {
return response.json();
}).catch(this.newSubscriptionError);
}
newSubscriptionFailure = new Subject();
newSubscriptionFailure$ = this.newSubscriptionFailure.asObservable();
public newSubscriptionError() {
this.newSubscriptionFailure.next();
}
コード:
ngOnInit(): void {
this.subscriptionError();
}
subscriptionError(){
this.subscriptionsService.newSubscriptionFailure$.subscribe(() => {
alert('call failed');
});
}
this.newSubscriptionError.bind(this)fixed、私のために、ありがとう! – Brett