我们可以通过 ofActionErrored() 处理 ngxs @Action 错误而不使用默认的“ErrorHandler”吗?

Posted

技术标签:

【中文标题】我们可以通过 ofActionErrored() 处理 ngxs @Action 错误而不使用默认的“ErrorHandler”吗?【英文标题】:Can we handle ngxs @Action errors via ofActionErrored() without going to default "ErrorHandler"? 【发布时间】:2018-11-13 08:58:58 【问题描述】:

我有一个 throwsError() 的异步 ngxs 操作。

我希望默认错误处理机制忽略这个抛出的错误,因为我将通过ofActionErrored() 在我的代码中处理它。但是,对于其他操作,仍应进行默认错误处理。

现在,ofActionErrored() 和默认错误处理(通过 Angular/Ionic)都试图处理错误。

我能想到的替代方法是从最初分派的动作中分派 Xxx_SUCCESS 和 Xxx_ERROR 动作,如果我能提供帮助,我想避免这样做。

建议。

【问题讨论】:

【参考方案1】:

在 NGXS 存储库中有一个功能请求引起了类似的关注。我们已经在核心团队会议上进行了讨论,我们将在下一个版本中重点关注这一点。您可以在那里提供您的反馈:https://github.com/ngxs/store/issues/1691

【讨论】:

【参考方案2】:

您可以使用 ofActionCompleted 来提供错误,如果有的话。取自我正在处理的代码的示例:

this.actions$.pipe(
  ofActionCompleted(GetMe)
).subscribe((data) => 
  const errorStatus = data.result.error['status'];

  if (!data.result.successful && errorStatus === 403) 
    this.snackbar.openFromComponent(TranslateSnakeBarComponent, 
      data: message: 'USER_DISABLED'
    );
  
);

【讨论】:

以上是关于我们可以通过 ofActionErrored() 处理 ngxs @Action 错误而不使用默认的“ErrorHandler”吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们需要创建数据库,而我们可以使用 Hibernate 生成它们? [复制]

我们可以直接实例化一个抽象类吗? [复制]

我们可以使用我们的开发证书重新签署应用商店构建吗?

通过测量我们周围啥的温度就可以知道当地的气温

我们可以从我们的 iOS 应用程序中显示指向 Android 订阅页面的链接吗?

我们可以用独特的浏览器(UN)计算我们网站的受欢迎程度吗?我们将如何得到它?