如何隐藏守卫Angular2的链接 [英] How to hide link by guard angular2

查看:55
本文介绍了如何隐藏守卫Angular2的链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在视图html中隐藏管理链接.我必须警惕:管理员和经理

How to hide admin link in view html. I have to guard :Admin and Manager

路由器配置:

{
   path: 'manager',
   component: ManagerComponent,
   canActivate: [ManagerGuard]
},
{
   path: 'user',
   component: UserAdminComponent,
   canActivate: [AdminGuard]
}

在视图中:

 <li>
    <a routerLink="/user" routerLinkActive="active-link">User</a>
 </li>

我想在/user上隐藏ManagerGuard上的链接,但显示AdminGuard.

I want to hide link on /user for ManagerGuard when but show for AdminGuard.

推荐答案

如果已经以一种可能有用的方式回答了问题,那么我在这里使用了另一种方法.当您已经在Guard中拥有canActivate方法时,还可以向该导航器中注入导航组件,然后可以直接调用以下canActivate方法:

Also if already answered in a way which might be helpful, I used here another approach. As you already have your canActivate method in the Guard, you could also inject your navigation component with that Guards and you can call these canActivate methods directly:

在保存导航的组件中

constructor(private adminGuard: AdminGuard)

然后在模板中

<li *ngIf="adminGuard.canActivate()">
  <a routerLink="/user" routerLinkActive="active-link">User</a>
</li>

修改

在我的情况下,这在生产模式下不起作用(如果使用必须注入的参数).我只是尝试编译它,但是angular抱怨缺少参数.如果您不使用参数,则可以正常工作;或者,如果您不使用函数中的参数,则只需传递

This does not work in prod mode in my case (if you use parameters which have to be injected). I just tried to compile it but angular complains about the missing parameters. If you do not use parameters, this works fine, or, if you do not use the parameters in your function - then simply pass

<li *ngIf="adminGuard.canActivate(null,null)">
  <a routerLink="/user" routerLinkActive="active-link">User</a>
</li>

另一件事:如果您是模板中上面的"adminGuard"之类的变量,则它必须是公共的-而不是私有的.

Another thing: If you is variables like the 'adminGuard' above in the template, it must be public - not private.

这篇关于如何隐藏守卫Angular2的链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆