gpt4 book ai didi

Angular |是否有可能导致 *ngIf 只运行一次?

转载 作者:行者123 更新时间:2023-12-04 10:58:27 24 4
gpt4 key购买 nike

我有一个小问题,我需要在我的 angular 应用程序中应用 Angular 色验证。
该应用程序由页面构建而成,每个页面都包含许多组件。
用户权限是在组件级别授予的,所以遗憾的是我不能只使用路由保护来授予完整页面,我不得不使用简单的 *ngIf 为每个组件添加验证:

     <results-component 
*ngIf="auth.hasPermission('driver_productivity')"
[format] = "driver_productivityFormat"
[IsFullWidth] = "IsFullWidth"
(customEvent)="showPrint($event)">
</results-component>

auth.service.ts:
hasPermission(permissionName){
if (!this.tokenPayload){
this.getToken().subscribe(t=>{this.tokenPayload=decode(t.getValue())});
if (this.tokenPayload.roles && this.tokenPayload.roles.length>0 ){
this.permissions={};
for (let i=0;i<this.tokenPayload.roles.length;i++){
this.permissions[this.tokenPayload.roles[i]]=true
}
}
}
return this.permissions[permissionName]

}

但是由于我每页有多个组件,因此这种验证会累积太多时间,因此它变成了一种滥用解决方案。

[Violation] 'setInterval' handler took 150ms zone.js:1755 [Violation] 'click' handler took 318ms zone.js:2279 [Violation] 'requestAnimationFrame' handler took 84ms zone.js:1755 [Violation] 'click' handler took 261ms



有没有办法让 *ngIf 只运行一次?第一次加载组件时?

最佳答案

Is there a way to make *ngIf run just once? when the component is first loaded?



是的。将对应的逻辑移到 ngOnInit(...)你的组件的方法。因此它只在组件加载时执行一次。

关于 Angular |是否有可能导致 *ngIf 只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59017309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com