我正在开发Angular SPA。
我要实现的是防止浏览器的Back
按钮返回并加载路由器隐含的先前组件。相反,我想每次按下Back
按钮时都加载默认组件,或者重定向到通用错误页面。在驱动到现有的Angular路由路径时,我正在使用停用防护来管理Back
按钮。
export interface CanComponentDeactivate {
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}
@Injectable({
providedIn: "root"
})
export class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {
canDeactivate(component: CanComponentDeactivate) {
return (component && component.canDeactivate) ? component.canDeactivate() : true;
}
}
让我们做起来更容易。想象componentA
导致componentB
。到componentB
时,我希望“后退”按钮指向componentE
(默认错误组件)。一种想法是使用Angular路由器通过检查某些标志(一旦按下“后退”按钮会更改)从componentE
导航到componentA
。但是,这样我就无法避免加载componentA
。有更好的方法吗?