ステータス== 'エラー'のjsonを通じてアプリケーションレベルのエラーを返すHTTP APIを使用します。私のサインアップサービスでAngular 4:AppレベルのhttpエラーをObservableエラーとして正しく処理するにはどうすればよいですか?
、私はそれを行う:私は
return this.userService
.create(user)
.map(
json => {
console.log(json);
if (json.status=='error') {
console.log('error return throw');
return Observable.throw('Credentials mismatch or not existing');
}
const user = json.data as User;
return user;
},
err => {
console.log(err);
}
);
そして、私のsingUp.componentで、ということ:
残念ながら、サービスが観察して(エラーを返したときonSubmit() {
// blahblah
this.si
.signUp(this.credentials.emailAddress, this.credentials.password, this.credentials.zipCode)
.subscribe(
user => {
console.log(user);
console.log(`SignUpComponent.onSubmit() found user.userId ${user.userId}`);
this.router.navigate(['signin']);
},
err => {
this.errorMessage = `*** SignUpComponent: Error while signing up {err}`;
console.error('*** SignUpComponent: Error while signing up', err);
this.resume();
//this.router.navigate(['signup']);
});
this.ngOnChanges();
}
.throw())、コンポーネントはerrクロージャをトリガーしませんが、ユーザークロージャはObservable.throwをuserパラメーターとして渡します。
私は、エラー終了がトリガーされたと思います。
そこには何が欠けていますか?
アップデート:ここで私が得るものです:
[Log] SigninService.signUp, zipCode=
[Log] {data: null, status: "error", message: "Error user create: - missing id API usage v1b3: Tu…ate\"}↵post: []↵.↵", ws: "v1b3: Tuesday, August 25th 2017 20h20 @ Tanger"}
[Log] error return throw
[Log] ErrorObservable {_isScalar: false, error: "Credentials mismatch or not existing", scheduler: undefined, _subscribe: function, …}
[Log] SignUpComponent.onSubmit() found user.userId undefined
() 'dは、あなたの' .MAPが何であるかを以下のように、最終的には()の呼び出しを使用する1つの必要性を誘発しません何か? – Aravind
ステータスが== '成功'の場合、APIが新しいユーザーを返すようにAPIステータスを探します。ステータスが「エラー」(ユーザアカウントが作成されていないことを意味します)の場合、私はサブスクライバのエラーを生成します。 –
これは動作しますか? – Aravind