Исходя из вашего комментария, звучит так, как будто вы хотите динамически изменять содержание степпера, основываясь на предыдущем шаге. Для этого я бы использовал подход, основанный на событиях, а не императивный подход.
Решением может быть отправка событий из компонентов шага в родительский компонент. Затем пусть родительский элемент отобразит соответствующие изменения.
Родительский HTML
<mat-vertical-stepper #stepper (selectionChange)="ChangeSelection($event)">
<mat-step label="Step 1">
Step 1
<app-comp0 (stateChanged)="step1State.next($event)"> </app-comp0>
</mat-step>
<mat-step label="Step 2">
Step 2
<app-comp1 [step1State]="step1State | async"> </app-comp1>
<app-comp2 [step1State]="step1State | async"> </app-comp1>
</mat-step>
</mat-vertical-stepper>
Родительский машинописный текст
step1State = new EventEmitter();
Дочерний машинописный текст app-comp0
@Output()
stateChanged = new EventEmitter();
Дочерний машинописный текст app-comp1
@Input()
set step1State(newState) {
// Do work here
}
Теперь компоненты Step 2
зависят от состояния компонента Step 1
. Вы можете продолжить это, связывая различные компоненты на основе множества @Input
и @Output
каждого компонента.
Это также упрощает рассуждение, поскольку каждый компонент зависит только от заданных событий. , а не прямая зависимость.