带有可选负载的 ngrx 操作
Posted
技术标签:
【中文标题】带有可选负载的 ngrx 操作【英文标题】:ngrx actions with optional payload 【发布时间】:2020-08-02 21:17:48 【问题描述】:我正在使用 Angular 8 和 NgRx 8,是否可以使用可选有效负载创建操作? 我正在尝试做类似的事情:
export const MyAction = createAction('[Action ] MyAction', props< prop?: string >());
但不幸的是不起作用。 你能帮帮我吗?
【问题讨论】:
恐怕这是不可能的。我有完全相同的问题 - 我只是传递了空对象。但是你的问题促使我去问专家,他证实这可能是不可能的。最好和最干净的选择似乎是要么发送空对象,要么只创建 2 个动作 - 一个有道具,另一个没有道具。 twitter.com/dutch_guy/status/1252207780213088256?s=21 @Vinni 这是可能的。看看我下面的评论 【参考方案1】:基于this post,有一个可选的有效负载定义。
例子:
export const FetchPlayersAction = createAction(
'[Players.List] FETCH_PLAYERS',
(payload: ListingOptions = ) => payload, // defined optional payload
);
【讨论】:
根据文章看起来应该是(payload: ListingOptions = ) => (payload)
@satanTime 取决于您和您的使用情况 :) 但是,如果文章是来源的话。我需要它,就像在示例中一样:)【参考方案2】:
可以使有效负载中的键成为可选的,但不能使有效负载对象本身成为可选的。所以解决方案可以是这样的,我们希望payload对象中的错误是可选的。
export const listenForFeatureFailure = createAction(
'[Feature] listen for feature Failure',
props< error?: any >()
);
在您的效果中,您可以使用或不使用error
来调用它
...
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure(error);
// or
ProductSubscriptionActions.listenForFeatureAccessUpdatedFailure();
【讨论】:
以上是关于带有可选负载的 ngrx 操作的主要内容,如果未能解决你的问题,请参考以下文章