我目前正在构建一个stepper组件,该组件的ng-content中呈现了多个step组件。在stepper组件中,我正在通过ContentChildren访问这些组件。每个步骤组件都有一个Subject,当Input值更改时,它会调用.next()。我这样做是为了通知Parent(StepperComponent),以便可以为视图重新创建模型。首先,我在foreach循环中订阅了每个主题。我想知道是否可以合并所有主题并订阅。因为我真的不在乎哪一步改变了,只是想知道那一步改变了。我目前已尝试使用merge()和CombineLatest(),当其中一个主题称为.next()时,两者均未触发。
这就是我用来合并和合并最新内容的方式
this.stepsOnChangeSubscription = merge(this.steps.map(s => s.onChanges$))
.pipe(takeUntil(this.unsubscribe$)).subscribe(_ => this.createStepConfig());
this.stepsOnChangeSubscription = combineLatest(this.steps.map(s => s.onChanges$))
.pipe(takeUntil(this.unsubscribe$)).subscribe(_ => this.createStepConfig());
步骤定义为
@ContentChildren(StepComponent) steps: QueryList<StepComponent>;
和$ unsubscribe只是要取消订阅ngOnDestroy