Диалог Kendo для подтверждения при навигации из углового компонента с помощью canDeactivate

Я создал службу canDeactivate, как показано ниже.

@Injectable()
export class UnsavedChangesGuardService implements CanDeactivate<MyComponent> {
canDeactivate(component: CanComponentDeactivate, currentRoute: ActivatedRouteSnapshot, 
currentState: RouterStateSnapshot, nextState: RouterStateSnapshot) {
    if (component.canDeactivate) {
        return (() => component.canDeactivate())();
        //return component.canDeactivate();
        //return confirm('You have unsaved changes! If you leave, your changes will be lost.')
        //return false;
    } else {
        return true;
    }
  }
}

Подтверждение браузера по умолчанию работает должным образом (подтверждение появляется, как только пользователь пытается перейти). Но диалог кендо не появляется сразу, хотя навигация не происходит, пользователь должен выполнить какое-то другое действие на странице, чтобы появилось окно кендо. ниже код компонента.

<kendo-dialog title="Please confirm" *ngIf="showDialog">
     Are you sure you want to navigate away?
     <kendo-dialog-actions>
       <button kendoButton class="k-button" (click)="closeConfirm('no')">No</button>
       <button kendoButton class="k-button" (click)="closeConfirm('yes')" 
            primary="true">Yes</button>
     </kendo-dialog-actions>
</kendo-dialog>
<div><input /></div>

export class myComponent{
     showDialog: boolean;
     canDeactivate() {
        this.showDialog = true;
        return false;
     }
 }

Может ли кто-нибудь помочь мне выяснить, почему пользователь должен выполнить какое-либо действие на странице после выполнения canDeactivate, чтобы увидеть диалоговое окно кендо. заранее спасибо

0 ответов

Другие вопросы по тегам