Angulaire 2 observable d'abonnement pas de déclenchement

J'ai un problème avec un abonnement à un observables pas de déclenchement.

J'ai une mise en page en utilisant le côté de nav disposition de la directive qui ressemble à ceci:

<md-sidenav-layout class="nav-bar">


    <md-sidenav #start>
        <nav>
            <a [routerLink]="['/home']">Home</a>
        </nav> 
        <button md-button (click)="start.close()">Close</button>
    </md-sidenav>

    <router-outlet></router-outlet>

</md-sidenav-layout>

Ce dont j'ai besoin pour faire est d'ouvrir le côté de nav à partir du composant que le routeur de la sortie de l'affichage.

L'un de ces composants pourrait ressembler à ceci:

@Component({

    providers: [SidenavService, MdIconRegistry],
    directives: [MdIcon],
    templateUrl: `<md-icon (click)="toggleSidenav()">menu</md-icon>`,
    styleUrls: ["./home.component.scss"]
})

export class Home {

    myColor: string;

    constructor(private sidenavService: SidenavService) {
        this.myColor = "primary";

        this.sidenavService.getSidenavObs().subscribe(state => {console.log("state change")});
    }


    toggleSidenav() {

        this.sidenavService.toggleSidenav("open");
    }

}

J'ai créé un service qui retourne un observables comme ceci:

@Injectable()
export class SidenavService {

    private toggle = new Subject<string>();
    private toggleObs = this.toggle.asObservable();

    getSidenavObs() {
        return this.toggleObs;
    }

    toggleSidenav(state: string) {
        this.toggle.next(state);
    }

}

Enfin, le code de la classe parent (qui appartient avec le côté nav mise en page HTML):

@Component({
  providers: [MdSidenav, SidenavService],
  directives: [ROUTER_DIRECTIVES, MD_SIDENAV_DIRECTIVES, MD_BUTTON_DIRECTIVES],
  selector: "app",
  templateUrl: "app.html",
  styleUrls: ["./app.scss"],
})

export class App {

  subscription: Subscription;

  constructor(private sidenavService: SidenavService, private sidenav: MdSidenav) {
    this.subscription = sidenavService.getSidenavObs().subscribe( status => {
      console.log("state change");
      sidenav.open();
    }, error => {
      console.log(error);
    }, () => {
      console.log("completed");
    });
  }
}

Maintenant, mon problème, c'est que l'abonnement à l'Application de la composante ne déclenche pas, toutefois, la souscription à Domicile dans le composant (qui est ce que le routeur de sortie affiche) est déclenché comme prévu.

Suis-je manqué quelque chose?

J'ai suivi ce guide: https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectionnel-service

OriginalL'auteur mda144 | 2016-06-25