我正在尝试将ID参数从调度发送到效果,我在Google中找不到这种情况的任何示例。
这是我已经拥有的代码:
组件:
=IF(A1="",0,MAX(A1:C1)-MAX(MIN(A1:C1),0))
效果(我需要访问值)
ngOnInit(): void {
this.packageClass = `type-${this.package.packageType.toLowerCase()}`;
// I set the payload to the action
this.store.dispatch(new LoadClusterInfo({id: this.package.id}));
this.checkStatus();
}
最后一个动作:
@Effect()
getClusterInfo =
this.actions.ofType(resultActions.Type.LOAD_CLUSTER_INFO)
.pipe(switchMap(() => {
let id = 'HARDCODED_ID';
return this.service.getPackageCluster(id); // Here is where i need the value
}),
map((packageCluster: PackageCluster) => new LoadClusterInfoSuccess(packageCluster)),
catchError((err: Error) => of(new LoadClusterInfoError(err))),
);
如何获取效果中组件(this.package.id)发送的ID?
答案 0 :(得分:4)
您可以在switchMap
运算符中访问操作的有效负载属性。
一些额外的事情:
ofType
运算符,因为ofType
函数是removed in NgRx 7 ofType
运算符以执行键入操作map
和catchError
,否则当发生错误时,效果流将被销毁。 See the NgRx docs for more info。 @Effect()
getClusterInfo = this.actions
.pipe(
ofType<LoadClusterInfo>(resultActions.Type.LOAD_CLUSTER_INFO),
switchMap((action) => {
return this.service.getPackageCluster(action.id).pipe(
map((packageCluster: PackageCluster) => new LoadClusterInfoSuccess(packageCluster)),
catchError((err: Error) => of(new LoadClusterInfoError(err))),
);
}),
);