Angular2 – Interacción entre componentes usando un servicio

Tengo dos componentes A y B, donde el componente A contiene un botón. Deseo que cuando el usuario haga clic en este botón, active una función en el componente B

  

Y el componente B se representa utilizando el enrutamiento. Estoy considerando utilizar un servicio con un booleano observable que indique si se hace clic en el botón de A. ¿Es esta la manera correcta de lograrlo?

    El servicio compartido es una forma común de comunicación entre componentes no relacionados. Sus componentes necesitan usar una única instancia del servicio , por lo tanto, asegúrese de que se proporcione en el nivel raíz.

    Un ejemplo que usa BehaviorSubject como delegado de datos :

    Servicio compartido:

     @Injectable() export class SharedService { isVisibleSource: BehaviorSubject = new BehaviorSubject(false); constructor() { } } 

    Componente 1:

     export class Component1 { isVisible: boolean = false; constructor(private sharedService: SharedService) { } onClick(): void { this.isVisible = !this.isVisible; this.sharedService.isVisibleSource.next(this.isVisible); } } 

    Componente 2:

     export class Component2 { constructor(private sharedService: SharedService) { } ngOnInit() { this.sharedService.isVisibleSource.subscribe((isVisible: boolean) => { console.log('isVisible: ', isVisible); // => true/false }); } } 

    Vale la pena mencionar que BehaviorSubject en una suscripción devuelve el último valor que contiene, por lo tanto, el componente del ejemplo anterior se actualizará con el valor más reciente inmediatamente después de la instanciación.

    BehaviorSubject también permite obtener su valor más reciente sin siquiera suscribirse:

     this.sharedService.isVisibleSource.getValue(); // => true/false 

    Servicio angular

    Debe usar un servicio para comunicarse entre sus dos componentes.

    Consulte https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

    Su servicio tiene un evento de propiedad. Entonces, el componente A puede emitir el evento y el componente B puede suscribirse.

    Use RxJS para emitir y suscribirse a su evento.

    Si mi respuesta no te satisface Por favor dígame y voy a trabajar en ello.