Angular 使用try-catch with-pipe和map处理角度错误

Angular 使用try-catch with-pipe和map处理角度错误,angular,error-handling,rxjs,observable,try-catch,Angular,Error Handling,Rxjs,Observable,Try Catch,如何返回错误并将其发送到组件ts,以便用户能够检测到错误是什么?下面的代码是一个登录功能 我希望从API返回一条错误消息,返回组件ts,并将其显示为角材质toast signIn(payload: signInRequestPayload): Observable<Account> { try { return this.query({ document: login_user payload, }).pipe( map((result: any)

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

我希望从API返回一条错误消息,返回组件ts,并将其显示为角材质toast

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`);
}
signIn(有效负载:signInRequestPayload):可观察{
试一试{
返回此.query({
文档:登录用户
有效载荷,
}).烟斗(
地图((结果:任意)=>{
控制台日志(结果);
if(result.data.length){
返回结果。数据[0]作为科目;
}
抛出错误(“”)
})
);
}捕获(错误){
抛出错误(`无法检索用户帐户');
}

}我们可以在
映射中抛出一个错误,
订户可以处理该错误

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('...');
       }
     });
  );
}

删除try catch。这可能会有帮助:我收到一个错误“Type“Subscription”缺少类型“Observable”中的以下属性:\u isScalar、source、operator、lift等6。“当我将try-catch替换为catchError时,您可以显示更新的代码吗?我刚刚删除了try-catch,然后通过subscripte返回(使用catchError格式)在哪里可以添加订阅?谁在调用
signIn
方法?我想他们是在订阅它。
signIn.subscribe(response => {/* successful response */}, error => {/* error response */});