到目前为止,我已经有一个来自angular / material(https://material.angular.io/components/dialog/overview)的工作对话框,它可以很好地工作,但是我想做的是防止客户端转到另一个页面当他们单击链接或在URL'/ messages'中搜索时。例如,如果我在主页“ / home”上,并且客户端在主页上搜索URL“ / messages”,我希望对话框弹出但停留在主页上。对于链接,如果我在“ / about”页面上并单击导航到“ / messages”页面的链接,则在对话框输出到浏览器时我希望停留在“ / about”页面上。
您可以在此StackBlitz链接中找到完整的工作示例
您可以使用保护服务来保护路由路径。创建路由防护并放置这样的代码。
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (this.guardSerive.open()) {
return true;
}else{
this._router.navigate(['/Home']);
}
}
在您的服务中,您可以像这样在警卫服务中调用一种方法...
open(){
let result = window.confirm('Are you sure want to move?')
return result;
}
您在app-routing.module.ts中的路由路径为...
RouterModule.forRoot([
{path:'Home', component: ExampleComponent},
{path: 'generate', component:GenerateComponent,
canActivate: [HnResolver]},
{path:'', redirectTo: 'Home', pathMatch: 'full'}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句