Action在@ ngrx / store中没有有效负载

时间:2018-02-21 17:36:13

标签: angular action ngrx-store

我在Angular 2和ngrx / store1或2中开发了Angular应用程序(我没有package.json或node_moduels)。我试图在Angular 5和ngrx / store 5.1.0中设置该应用程序。正如所料,最新版本中没有可用的东西。其中一个关键是不起作用的是Action没有有效载荷。如果我使用有效负载实例化Action,则返回"错误TS2339:属性' payload'类型'行动';"我在ngrx / store库中跟踪了Action代码,实际上,Action接口定义如下。

export interface Action {
    type: string;
}

我在互联网上搜索了很多关于新ngrx /商店的信息,但是我找不到答案,有没有人有关于它的一些信息?

3 个答案:

答案 0 :(得分:3)

实际上它已从ngrx/store的新版本中删除。但是有一些方法可以自己部署它。检查this github issue,人们已经提出了不同的有用解决方案。

话虽如此,我最喜欢的解决方案是将Action接口扩展到这样的新通用接口:

export interface NewAction<T> extends Action {
    type: string;
    payload: T;
}

然后您就可以使用它:

ExampleAction: NewAction<boolean> = {
    type: 'myType',
    payload: true
};

答案 1 :(得分:0)

签出迁移文档 https://github.com/ngrx/platform/blob/master/MIGRATION.md

他们注意到接口上的payload属性已从Action中删除,您需要将操作转换为适当的类型以访问payload属性

答案 2 :(得分:-1)

可以将有效内容属性添加到您的操作中。

如果你的行动有有效载荷:

export class ActionWithPayload implements Action {
   readonly type = 'Action With Payload';
   constructor(payload: string) {}
}