angular - nx 导航可以返回多个操作吗?
问题描述
我有一个使用 nx 的项目,它使用 nx 的数据持久性来创建 NgRx 效果。
在导航时,我需要为给定路线调度多个操作。但是,nx 导航的预期运行参数格式是:
(parameter) run: (a: ActivatedRouteSnapshot, state?: T) => Observable<Action> | Action | void
这就是我所拥有的:
createEffect(() =>
this.actions.pipe(
withLatestFrom(this.store.select(myStateSelector)),
navigation(component, {
run: (a: ActivatedRouteSnapshot, state: MyState) => {
if (state.isLookup1Loaded) return;
return myActions.loadLookup1();
},
onError: (action, error) => {
throw Error('error');
}
})
)
);
但这就是我需要的:
createEffect(() =>
this.actions.pipe(
withLatestFrom(this.store.select(myStateSelector)),
navigation(component, {
run: (a: ActivatedRouteSnapshot, state: MyState) => [
myActions.loadLookup1(),
myActions.loadLookup2()
],
onError: (action, error) => {
throw Error('error');
}
})
)
);
最后一段代码会生成此错误:
类型 'TypedAction[]' 不可分配给类型 'void | 行动 | 可观察的'
考虑到它期待其中一种类型的输出,这是非常有意义的,而我提供了一个 Action 数组。
有没有办法在导航>运行中返回多个操作,就像我对常规效果和开关图所做的一样?
解决方案
你可以使用:
of(Action1, Action2)
或在服务电话之后:
.pipe(mergeMap(()=>[Action1, Action2]))
推荐阅读
- servicestack - 如何确保我们的业务服务使用与 servicestack-service 相同的数据库连接
- sql - SQL Server:按 2 列排序(首先获取 ColumnX > Null,然后 Id > 按 DESC 排序)
- bash - 如何在匹配之前 grep 特定模式?
- javascript - 抓取附加到 div 元素的 css 属性
- concurrency - Celery 仅使用 20% 的 Cpu(峰值)
- javascript - useState 对象集
- snowflake-cloud-data-platform - 如何将所有 Snowflake 数据库(包括未来)的使用权授予角色?
- javascript - 正确答案后带来正确信息
- python-3.x - `__reduce__` 和 `__reduce_ex__` 是否只为模块 `pickle` 服务?
- javascript - 更改 HTML 模板中的 javascript 函数名称或元素 ID 使其停止工作