【发布时间】:2017-03-08 01:25:18
【问题描述】:
我试图在服务中构建一个方法,用于检查是否应根据当前用户的权限向当前用户显示导航按钮(我知道这只是装饰性的“安全性”)。因此,这是放置在模板内的按钮
<button [routerLink]="['/some/where']"
*ngIf="AuthService.isAuthorized(['some', 'where'])">
Personen
</button>
AuthService.isAuthorized 方法使用提供的数组遍历所有可用路由并从特定路由的数据对象中获取所需的权限:
{
path: 'some',
component: SomeComponent,
data: {
permissions: [
"read:some",
"edit:some"
]
},
children: [
{
path: 'where',
component: SomeComponent,
data: {
permissions: [
"read:where"
]
}
},
]
}
所以在这种情况下,当前登录用户需要权限["read:some","edit:some","read:where"],以便向他显示按钮。 工作至今!
但是由于该函数在模板内部被调用,因此由于角度变化检测而被多次调用。我怎样才能更改我的代码,以便只调用一次函数?如果它只在在身份验证完成后将所有分配给经过身份验证的用户的权限写入 AuthService.permissions
时才被调用,那就更好了【问题讨论】:
标签: function angular templates