Использование деактивации защиты с mat-stepper не обнаруживает несохраненные шаги повторного посещения
Я использую Angular 8. В своем приложении я использую mat stepper и использую его таким образом.
<mat-vertical-stepper #stepper (selectionChange)="stepperSelectionChanged($event)" [linear]="isLinear">
<mat-step *ngFor="let menu of displayMenus; let i = index" [label]="menu.title">
<router-outlet *ngIf="i === selectedStep"></router-outlet>
</mat-step>
</mat-vertical-stepper>
Здесь массив displayMenus содержит определенные маршруты, которые необходимо загрузить. содержимое из компонентов загружается правильно, и степпер тоже работает правильно. На каждом этапе я загружаю компоненты,formGroup
. Я используюcanDeactivate()
чтобы обнаружить несохраненные изменения, и у меня есть четыре шага. Я также использую линейное свойство в матовом степпере. Итак, после сохранения шага 1, он переходит к шагу 2. Если я сделаю изменения и попытаюсь вернуться к 1-му шагу, обнаружение несохраненных данных сработает. Но если я снова изменю данные шага 1 и нажму на любой другой маршрут, обнаружение изменений (canDeactivate()
метод) не запускается. Я заметил следующее: как только я сохраню данные, перейду к следующему шагу и вернусь, новые изменения не считаются несохраненными. Пожалуйста, помогите мне, у кого-нибудь есть представление об этом.