Tenho um componente de chatbot que carrego em meu app.component.html para acessá-lo em qualquer lugar.
<app-chatbot [enable]="this.enableSerenia"></app-chatbot>
No meu componente chatbot, tenho várias variáveis acessíveis de fora usando @Input()
;
export class ChatbotComponent implements OnChanges {
@Input() enable: boolean = false;
@Input() actionsList: any[] = [];
@Input() messagesList: any[] = [];
@Input() showDialog: boolean = false;
@Input() newNotification: boolean = false;
}
Em outro componente, preciso atualizar algumas dessas variáveis do chatbot. Então, declaro isso no meu outro construtor de componente e atualizo a variável assim:
constructor(
private serenia: SereniaChatbotComponent // EDISSYUM - NCH01 Implémentation SerenIA
) {
this.serenia.newNotification = true;
}
Mas a variável não é atualizada no meu frontend. O que preciso para "atualizar" meu frontend quando atualizo a variável do meu chatbot a partir de outro componente?
Estou no Angular 16
Crie um serviço específico para o chatbot. Certifique-se de que ele seja fornecido na raiz para que seja acessível de qualquer lugar do seu aplicativo.
Inicializamos um assunto e um observável. O motivo disso é acionar a detecção de alterações no componente do chatbot.
Use o
ChatBotService
componente no aplicativo. Nós usamosEm seguida, vincule essas propriedades de serviço no componente do aplicativo.
Talvez você não veja os valores atualizados, então precisamos acionar a detecção de alterações no componente do chatbot. Usamos o observável que criamos anteriormente para fazer isso.
Agora basta modificar os valores de qualquer lugar do seu aplicativo e deverá funcionar.