Angular 2-如何在ngIf函数中获取标记属性
给定这样一个模板Angular 2-如何在ngIf函数中获取标记属性,angular,Angular,给定这样一个模板 <a *ngIf="canAccess()" routerLink="/adminUsers">...</a> <a *ngIf="canAccess()" routerLink="/link2">...</a> <a *ngIf="canAccess()" routerLink="/otherlink">...</a> <a *ngIf="canAccess()" routerLink="/somt
<a *ngIf="canAccess()" routerLink="/adminUsers">...</a>
<a *ngIf="canAccess()" routerLink="/link2">...</a>
<a *ngIf="canAccess()" routerLink="/otherlink">...</a>
<a *ngIf="canAccess()" routerLink="/somthingelse">...</a>
我该怎么去
- 路由器链路
- 该函数中的任何其他标记属性
- 以获取当前URL
- 如果要检查URL参数
canAccess()
中调用它们的方法
此外,您还可以通过更新模板来保护您的路由(从routerLink
)本身
<a *ngIf="canAccess($event)" routerLink="/adminUsers">...</a>
我的解决方案是创建一个指令及其相关组件,所以我只给它用户想要访问的模块 该指令询问服务用户是否已登录并可以访问该链接 如果是,则链接将与零部件一起重新放置
canAccess(event){
console.log(event.currentTarget);
console.log(event.currentTarget.getAttribute("routerlink"));
..
}
下面是一个关于如何插入组件dynamicali(不包含授权部分)的示例
可能有点过分,但最后我用了
<a *menuItem="dashBoard"></a>
而不是
<a class="menuItemA menuRouterLinkA" routerLink="/dashBoard" routerLinkActive="menuCurrentLinkA" >{{ "DashBoard" }}</a>
{“仪表板”}
它涉及功能/页面/模块。。访问授权:-)
是的,按标签属性你指的是什么?但我有很多链接,我只是举了一个例子(我更新了我的模板),所以为了使用防护装置,你需要将它们添加到你的
app.routes.ts
(或任何你有它们的地方)。防护装置只能阻止对模块的访问,但我如何检查我是否可以显示我的链接?也许我会为每个链接写一个指令,检查它是否可以显示?好吧,检查是否应该显示:使用*ngIf。在*ngi中,如果必须检查布尔值或数组中的内容或其他内容。如果为true=>则显示其值。例如,我使用了一个表示菜单链接的对象数组。这些对象还可能具有类似布尔或整数的属性,表示其在特定情况下的可见性。但是实现取决于您的需要。我的帖子的整个想法就是要做到这一点,但是如果我可以传递到我在ngif中调用的函数,即链接的url,而无需编写它,那就更容易了。您只需要在canAccess()中检查event.currentTarget.getAttribute('routerlink')
方法通过if/switch/array.includes/which返回相应的布尔值。哦,我不知道我可以通过$event这样的方式进行单击,很好,谢谢你的欢迎,但是你需要小心currentTarget在某些浏览器中不起作用。在这种情况下,它可能是srcelment
或target
<a *menuItem="dashBoard"></a>
<a class="menuItemA menuRouterLinkA" routerLink="/dashBoard" routerLinkActive="menuCurrentLinkA" >{{ "DashBoard" }}</a>