1. ホーム
  2. javascript

[解決済み] 観測可能なエラーを手動で投げるには?

2023-04-10 16:20:04

質問

私はAngularアプリに取り組んでおり、以下のようにHTTPを介して残りの呼び出しを行います。

login(email, password) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let options = new RequestOptions({ headers: headers });
    let body = `identity=${email}&password=${password}`;
    return this.http.post(`${this._configService.getBaseUrl()}/login`, body, options)
    .map((res: any) => {
        let response: any = JSON.parse(res._body);
        if (response.success == 0) {
          Observable.throw(response);  // not working
        } else if (response.success == 1) {
          console.log('success');
          localStorage.setItem('auth_token', 'authenticated');
          this.loggedIn = true;
          return response;
        }
    });
}

基本的に、私は自分のコンポーネントがsubscribeの呼び出しでresponse & errorを得るようにしたいのです。

this._authenticateService.login(this.loginObj['identity'],this.loginObj['password']).subscribe(
  (success)=>{      
    this.credentialsError=null;  
    this.loginObj={};  
    this._router.navigate(['dashboard']);    
  },
  (error)=>{
    console.log(error);        
    this.credentialsError=error;     
  }
);

のように定義されていますが、私のAPIは常に成功を返します。

どうすれば response.success == 0 というエラーメッセージを投げ、subscribeコールバックのerror引数でアクセスできるようにするにはどうしたらよいでしょうか?

どのように解決するのですか?

if (response.success == 0) {
   throw Observable.throw(response);  
 } 

を編集する rxjs 6 :

if (response.success == 0) {
   throw throwError(response);  
 }