商店调度动作不是Angular中的构造方法

时间:2020-01-10 04:42:23

标签: javascript angular typescript redux ngrx

我正在使用ngrx来存储数据。我在调用操作时遇到错误了吗?

_global_store_actions_auth_actions__WEBPACK_IMPORTED_MODULE_9 __。SetAuthTokenRequest不是构造函数

myCompoment.ts

import * as AuthActions from "../../global/store/actions/auth.actions";
import { Token } from "../../global/models";

const tk: Token = {
      access_token: "string",
    };
this.store.dispatch(new AuthActions.SetAuthTokenRequest(tk));

actions.ts

import { Action } from "@ngrx/store";
import { Token } from "../../models/token";

export declare enum AuthActionTypes {

SET_AUTH_TOKEN_REQUEST = "[Core] SET_AUTH_TOKEN_REQUEST",

export interface AuthenticationData {
  user: string;
  password: string;
}
export declare class SetAuthTokenRequest implements Action {
  payload: Token;
  readonly type = AuthActionTypes.SET_AUTH_TOKEN_REQUEST;
  constructor(payload: Token);
}

reducer.ts

import { Token } from "../../models";
import { AuthAction, AuthActionTypes } from "../actions";

export interface AuthState {
  token: Token;
  unverifiedUserToken: Token;
}

const initialValue: AuthState = {
  token: null,
  unverifiedUserToken: null
};

export function auth(state = initialValue, action: AuthAction): AuthState {
  switch (action.type) {
    case AuthActionTypes.SET_AUTH_TOKEN_REQUEST:
      return {
        ...state,
        token: action.payload
      };
    default:
      return state;
  }
}

1 个答案:

答案 0 :(得分:0)

这是错误的

export declare class SetAuthTokenRequest implements Action {
  payload: Token;
  readonly type = AuthActionTypes.SET_AUTH_TOKEN_REQUEST;
  constructor(payload: Token);
}

您需要像这样更改

   export class SetAuthTokenRequest implements Action {
      public readonly type = AuthActionTypes.SET_AUTH_TOKEN_REQUEST;
      constructor(public readonly payload: Token);
    }

您可以查看我的代码here