Поменять логическое значение с другого компонента на угловой 4 - PullRequest
0 голосов
/ 02 мая 2018

Я использую 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') -> true или false

Я пробовал так много вещей, но я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 02 мая 2018

Если эти компоненты не являются братьями и сестрами, вы можете создать службу сообщений, подобную этой:

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;
          }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...