1
resposta

Eventos broadcast em componentes independentes

Olá galera! Gostaria de tirar uma dúvida. Ontem quando eu estava estudando um pouco de Angular2 me deparei com uma situação a qual não sei resolver.

Na minha situação hipotética eu tinha que fazer 2 tabelas, uma onde iriam ser listados produtos disponíveis para adicionar, e na outra onde os produtos adicionados apareceriam. Essas duas tabelas seriam 2 componentes diferentes, e o mais importante: esses dois componentes são independentes, não existe relação de parentesco entre eles. Logo o @Output e o EventEmitter não se enquadram nesse caso, correto?

Porém eu preciso que cada vez que o usuário clicar em um produto na tabela disponíveis, seja disparado um evento, e que a tabela de produtos adicionados trate esse evento e adicione o produto. Como fazer isso da maneira CORRETA???

Segue um código de como são chamados os componentes no AppComponent. Repare que um não é filho do outro, então não dá pra usar o (event)="funcao()".

OBS: Cheguei a pesquisar algo sobre criar um serviço Broadcaster, e tal, mas não sei como implementar da forma correta e nem sei se essa seria a solução adequada, visto que o $broadcast do Angular1 não existe mais no Angular2.

<app>
    <produtos-disponiveis></produtos-disponiveis>
    <produtos-adicionados></produtos-adicionados>
</app>
1 resposta

Bom, se eu entendi corretamente, os dois componentes são independentes, certo?

Então, eles devem ser usados no template de outro componente? Certo?

Então, existe o decorator ViewChild que permite injetar dentro de um componente pai um componente filho. No pai..vc pode interagir com os dois elementos. Acho que isso resolve seu problema.

Dá uma olhadinha na documentação para pegar o conceito.

https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html

Depois me diz aqui o resultado.