如果他们试图离开他们对表单进行更改的页面,我想在屏幕上向用户显示提示。到目前为止,我已经创建了一个 Guard,并成功地让它在用户离开此页面时在控制台中记录一些内容。但是现在,我需要显示一个Dialog
警告他们的框,他们应该能够取消“导航”或确认他们希望导航离开。
我的组件中有一个方法,其中包含检查是否对表单进行了更改的表单,现在我只需要实现上述其余部分。
这是我的后卫:
import { Injectable } from '@angular/core';
import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class RouterGuardGuard implements CanDeactivate<unknown> {
canDeactivate(
component: unknown,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
console.log('TESTING');
return true;
}
}
我已经在我的内部实现了我的组件的保护app-routing-module.ts
:
{ path: 'users/edit/:id', canDeactivate: [RouterGuardGuard], component: UserEditorComponent },
因此,如果用户在导航发生之前对 I need to show a dialog box 中的表单进行了更改,则UserEditorComponent
我已经拥有此对话框的组件,我在应用程序的不同部分中使用了该组件。
谢谢