Создание класса или интерфейса для связи:
export class StepperData {
step: number;
data: any;
}
Каждому компоненту шага требуется Output
:
@Output()
done = new EventEmitter<StepperData>();
Когда вы будете готовы к go к следующему шаг, отправьте вывод на родительский:
HTML:
<button mat-button matStepperNext (click)="next()">Next</button>
TS:
next() {
let stepperData: StepperData = {
step: <step number>,
data: <your data>
}
this.done.emit(stepperData);
}
Получить эти данные на родительском и использовать их на других компонентах шага :
HTML:
...
<mat-step [completed]="false">
<ng-template matStepLabel>DATOS GENERALES</ng-template>
<app-step-one [parentFormGroup]="campaign" (done)="updateData($event)"></app-step-one>
</mat-step>
...
TS:
updateData(stepperData: StepperData) {
// you have the stepper component data here
// update your state and model
}
Другой способ сделать это - использовать службу и наблюдаемые объекты, но используя Input
и Output
проще.