내 관찰 결과에 가입하면 내 subscribeToTasks()
호출이 실패하고 내 장치에서 내 subscriptionError()
메서드의 코드가 궁극적으로 호출됩니다. 간단한 경고. 문제는 언제 내 브라우저 콘솔에서 다음과 같은 오류가 발생,이 호출에 오류가 발생하고 this.newSubscriptionFailure.next()
가 호출됩니다입니다 :정의되지 않은 'next'속성을 읽을 수 없습니다.
정의되지 않은
newSubscriptionFailure
얼마나 '다음'정의되지 않은
의 속성을 읽을 수 없습니다 메소드 위에 정의 된 것을 명확하게 볼 수있을 때? api 호출 오류가 발생하기 전에 해당 코드가 오래 동안 나타납니다. 나는이 접근법을 과거에 사용했고 항상 효과가있었습니다. 내가 생각할 수있는 유일한 차이점은 서비스에서 .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