使用带有管道和地图的 try catch 进行角度错误处理

时间:2021-05-19 17:41:42

标签: angular error-handling rxjs observable try-catch

如何返回错误并将其发送到组件 ts 以便用户可以检测到错误是什么?下面的代码是一个登录功能。

我希望来自 API 的错误消息在组件 ts 处返回并将其显示为有角度的材料吐司。

signIn(payload: signInRequestPayload): Observable<Account> {

try {
  return this.query({
    document: login_user
    payload,
  }).pipe(
    map((result: any) => {

      console.log(result);
      if (result.data.length) {
        return result.data[0] as Account;
         }
        throw Error("")
    })
  );
} catch (error) {
  throw Error(`Unable to retrieve user account`);
}

}

1 个答案:

答案 0 :(得分:0)

我们可以在 map 中抛出错误,而 subscriber 可以处理错误。

signIn(payload: signInRequestPayload): Observable<Account> {
  return this.query({
    document: login_user,
    payload,
  }).pipe(
     map((result: any) => {
       if (result.data.length) {
         return result.data[0] as Account;
       } else {
         throw new Error('...');
       }
     });
  );
}

那么应该由订阅者来处理错误:

第一个回调函数用于成功,第二个回调用于错误场景。

signIn.subscribe(response => {/* successful response */}, error => {/* error response */});