具有可选负载的 ngrx 操作

ngrx actions with optional payload

我正在使用 Angular 8 和 NgRx 8,是否可以创建一个带有可选负载的操作? 我正在尝试做类似的事情:

export const MyAction = createAction('[Action ] MyAction', props<{ prop?: string }>());

但不幸的是不起作用。 你能帮帮我吗?

基于this post,有一个可选的负载定义。

示例:

export const FetchPlayersAction = createAction(
  '[Players.List] FETCH_PLAYERS',
  (payload: ListingOptions = {}) => payload, // defined optional payload
);

可以使有效载荷中的键成为可选的,但不是有效载荷对象本身。所以解决方案可以是这样的,我们希望负载对象中的错误是可选的。

export const listenForFeatureFailure = createAction(
    '[Feature] listen for feature Failure',
    props<{ error?: any }>()
);

并且在您的效果中,您可以使用或不使用 error

...
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure({error});
// or
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure({});

根据你的例子,你可以设置一个默认值,然后它是可选的:

export const MyAction = createAction(
  '[Action ] MyAction',
  (prop: string = 'My default value') => ({ prop })
);