繁体   English   中英

向 Angular 应用程序中的 NGRX 操作添加服务相关逻辑

[英]Adding service dependent logic to NGRX actions in an Angular application

我有一个这样的动作文件:

export enum ActionTypes {
  FailureAction = 'Failure action',
}

export class FailureAction implements Action {
  readonly type = ActionTypes.FailureAction;

  constructor(public payload: any) { }
}

export type ActionTypes = FailureAction;

我想在FailureAction类中添加一些逻辑,以便每当调用此操作时,我们都会调用一个服务来决定如何显示错误(唯一的参数是代码)。 我创建了一个在构造函数中具有代码参数的类,并使用在应用程序模块中定义的依赖项注入器( 手动注入服务)来获取所需的服务。 然后我用新创建的类扩展了 FailureAction 并在构造函数中使用代码参数调用 super() 。 当我调度FailureAction ,控制台会被错误轰炸并使整个应用程序崩溃。

错误

这甚至可以按照我尝试的方式进行吗? 任何替代建议?

Action 类中不应包含特殊逻辑。 该操作只是通过框架传递的数据有效负载。

有两种方法(据我所知)来处理动作:

  1. Reducer函数使用 Action 和 State 来生成另一个 State
  2. 一个Effect监听一个 Action,执行一些副作用操作,然后产生一个不同的 Action

如果您需要基于某个动作执行某些操作(例如,从服务器或本地存储中查找数据),您可以使用 Effect。 你可能有一个看起来像这样的流程:

发生错误 -> 调度新的错误操作(错误代码)

错误动作 -> 错误处理效果(查找错误代码) -> 新的错误信息加载动作

错误消息加载操作 -> 错误视图减速器 -> 带有错误消息的新视图状态

效果是可注入的服务,可以引用和使用其他服务。

查看@ngrx/effects的文档: https : @ngrx/effects

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM