1

我正在使用 Ngrx 4.03 和 typeScript 2.5.2。

我已经定义了一个动作:

import { Action } from '@ngrx/store';
import { IUser } from '../models';

export const LOGIN_SUCCESS = '[Auth] Login Success';
export const LOGOUT_SUCCESS = '[Auth] Logout Success';

export class LoginSuccess implements Action {
  readonly type = LOGIN_SUCCESS;

  constructor (
    public payload: IUser
  ) {}
}

export class LogoutSuccess implements Action {
  readonly type = LOGOUT_SUCCESS;
}

export type AuthActions
 = LoginSuccess
 | LogoutSuccess;

在我相应的减速器中,TypeScript 告诉我 that action.payloaddoesn't exist on Action,即使我可以很好地记录该值。我究竟做错了什么?

4

2 回答 2

0

我几乎可以肯定,如果您有一个(或多个)没有有效负载的操作,它将引入这种行为。

所以更改此代码:

export class LogoutSuccess implements Action {
  readonly type = LOGOUT_SUCCESS;
}

export class LogoutSuccess implements Action {
  readonly type = LOGOUT_SUCCESS;

  constructor(public payload: null)
}
于 2017-09-14T12:34:37.303 回答
0

因此,在商店的 4 版本中,删除了对操作中有效负载的支持,因为您可以看到已经报告了一个问题。https://github.com/ngrx/platform/issues/31

您可以通过像这样重写您的操作来消除这种情况。

import { Action } from '@ngrx/store';
export interface CustomAction extends Action {
  payload: any;
  appraisal_id: any;
}
于 2018-05-29T08:40:31.793 回答