从角度4中的另一个组件更改布尔值

时间:2018-05-02 14:42:22

标签: angular

我使用BooleansuserRights.service检查导航点是显示还是隐藏。因此,我想检查登录用户的权限,然后将导航的变量设置为truefalse

我有两个组件:我的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') - >返回的值。真或假

我尝试了很多东西,但我无法弄清楚如何做到这一点。

1 个答案:

答案 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;
          }
        });