Если эти компоненты не являются братьями и сестрами, вы можете создать службу сообщений, подобную этой:
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;
}
});