我使用Booleans
和userRights.service
检查导航点是显示还是隐藏。因此,我想检查登录用户的权限,然后将导航的变量设置为true
或false
。
我有两个组件:我的navbar.component.ts
和我的login.component.ts
。在我的navbar.component.ts
里面是像这样的布尔(15) - >
canAddHardware
canChangeUserRights
canEditBlog
...
现在用户登录我的login.component.ts
内部,onLogin()
函数被触发。我打电话给我的userRights.service.userHasRight('canAddHardware')
,而我需要Boolean
内的navbar.component.ts
作为从userRights.service.userHasRight('canAddHardware')
- >返回的值。真或假
我尝试了很多东西,但我无法弄清楚如何做到这一点。
答案 0 :(得分:1)
如果这些组件不是兄弟,那么您可以创建这样的消息服务:
export class ShareDataService {
messageSource = new BehaviorSubject<IMessage>({
messageType: 'message',
payload: 'something',
});
currentMessage: Observable<IMessage> = this.messageSource.asObservable();
changeMessage(message: IMessage) {
this.messageSource.next(message);
}
}
然后,从您的login.component.ts,您可以使用如下方法发送消息:
sendMessage(message: MessageType, data: any) {
const messageToSend: IMessage = {
messageType: message,
payload: data,
};
this.shareDataService.send(messageToSend);
}
在navbar.component.ts中,您可以在ngOnInit中收听该消息,例如:
this.shareDataService.currentMessage.subscribe((message: IMessage) => {
if (message === 'message') {
this.canAddHardware = true;
}
});