gpt4 book ai didi

angular - 在 NGXS 中组合多个 @Select

转载 作者:行者123 更新时间:2023-12-05 01:40:04 28 4
gpt4 key购买 nike

我在这样的组件中有多个@Selects:

@Select(ItemState.getMode) mode: Observable<Item>;
@Select(QuestionState.SingleQuestion) question: Observable<Question>;
@Select(ItemState.getItemNames) itemNames: Observable<any>;
@Select(ItemState.getItemStepDetails) itemStepDetails: Observable<any>;

现在,我想在我的 ngOnInit() 中获取所有这些值,并将它们分配给一些我可以在我的模板中使用的变量。我不想使用异步直接使用它们,因为我需要操作它们。

最好的方法是什么?

最佳答案

如评论所述,combineLatest 可能是您正在寻找的运算符。

如果您通过 map 而不是组件中定义的多个变量将这些源选择器 Observables 组合到另一个流中,您仍然可以在模板中使用 async 管道。例如

this.combinedStream$ = combinelatest(mode$, question$, itemName$, itemDetails$)
.pipe(
map(([m, q, name, detail]) => {
// Manipulate/project the 4 results into what you need
return { .. };
});

然后在你的模板中你可以使用combinedStream$ | async 访问被操纵的表单,并让 async 管道处理订阅。

就 NGXS 而言,如果这种数字选择器的组合变得很普遍,并且您想在多个组件中重用该组合,那么您会想看看 NGXS Joining Selectors , 或 Meta Selectors ,并像往常一样直接在模板中使用它们。

关于angular - 在 NGXS 中组合多个 @Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57177275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com