Javascript 角度4。基于if删除构造函数中的组件
我想为组件添加保护。 如果用户没有查看此组件的权限,则不会呈现该组件 我尝试将我的Javascript 角度4。基于if删除构造函数中的组件,javascript,angular,Javascript,Angular,我想为组件添加保护。 如果用户没有查看此组件的权限,则不会呈现该组件 我尝试将我的if放入构造函数并返回false,但它仍然呈现 我还向模板本身添加了if,但是我没有看到视图,但是组件仍然处于活动状态,这增加了代码的复杂性,因为我需要维护同一if的多个位置 有没有办法告诉组件根本不要渲染 构造函数(私有用户服务:用户服务){ if(this.userService.isAllowed(“see\u trade\u groups”)==false){ 返回; } }为此,您可以看到。把它放在组件
if
放入构造函数并返回false
,但它仍然呈现
我还向模板本身添加了if
,但是我没有看到视图,但是组件仍然处于活动状态,这增加了代码的复杂性,因为我需要维护同一if
的多个位置
有没有办法告诉组件根本不要渲染
构造函数(私有用户服务:用户服务){
if(this.userService.isAllowed(“see\u trade\u groups”)==false){
返回;
}
}
为此,您可以看到。把它放在组件路径上
,它就能完成你想要的工作
您可以编写一个逻辑,根据该逻辑来导航路由或不导航。组件编译生命周期由Angular compiler处理,因此组件无法控制自己的生命周期,应该从外部对其进行控制 处理这个问题的一个常用方法是使用路由器。路由组件中的生命周期不同于常规组件,因为它由路由器处理;它们连接到
组件。可以在常规组件中使用,但不能在常规组件中使用
否则,应使用指令处理此问题ngIf
是防止编译常规组件的内置方式
所以它变成了
<foo *ngIf="userService.isAllowed('see_trade_groups')"></foo>
它的用法如下:
<foo *role="'see_trade_groups'"></foo>
请注意,
Role
是*
结构指令。这允许它控制它所指定的元素的编译,类似于ngIf
和ngFor
的做法。我需要基于组件而不是基于路由的组件,因为我可以在同一路由上有许多组件。您有许多组件,并且希望根据条件显示和隐藏一些组件?如果我放置ngIf,它可以工作,但组件仍然执行api调用,因为只有模板没有呈现. 然后我需要在所有组件挂钩上添加if。我想避免的事情是,ngIf应该在组件周围,而不是内部。如果您的组件仍然进行HTTP调用,要么就是这样,要么是您忘记取消订阅您的Observable。
<foo *role="'see_trade_groups'"></foo>