Tengo dos componentes principales: lista y detalle. En el tercer componente, que no tiene una relación padre / hijo con ninguno de los dos primeros componentes, necesito saber qué componente se está usando / mostrando actualmente y, en función de eso, realizar algunas acciones en él.

En este momento, estoy suscrito a los parámetros de URL dentro de cada uno de los dos componentes (lista y detalles). Dentro de las dos suscripciones, estoy estableciendo un tema de comportamiento (usando next) al que se suscribe el tercer componente. Establecí el comportamiento sujeto a 'lista' dentro de la suscripción a los parámetros de URL dentro del componente de lista y configuré el comportamiento sujeto a 'detalle' dentro de la suscripción a los parámetros de URL dentro del componente de detalle. Así es como el tercer componente siempre sabe qué componente se muestra.

¿Estoy seguro de que hay una mejor manera que jugar este tipo de ping-pong?

0
Mandy 12 dic. 2019 a las 21:10

2 respuestas

La mejor respuesta

Para mí, tu enfoque parece correcto. Hice un ejemplo de Stackblitz de cómo probablemente lo manejaría: https://stackblitz.com/edit/angular -5mfjbz

En el ejemplo Parent = List y Child = Detail y el tercer componente observa lo que sucede en los otros componentes.

1
Kari F. 12 dic. 2019 a las 19:33

Según Documentación angular, solo hay una forma de lograr la interacción de componentes no relacionados, servicios compartidos.

De su pregunta, no creo que necesite una explicación sobre cómo lograr servicios compartidos. Esta es la única forma de lograr la comunicación entre los componentes que no tiene una relación padre-hijo.

Además, la solución de servicios compartidos es fácil de implementar, en lugar de usar una tienda como ngrx

Siempre puede usar store ngrx, e intente establecer y obtener valores donde sea necesario.

1
Plochie 13 dic. 2019 a las 04:09