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>