I have a problem where an EventEmitter does not output the value to the parent component. This is how I am set up.
main.component.ts (short version)
... @Component({ selector: 'my-app', templateUrl: '/app/views/main.ejs', directives: [ROUTER_DIRECTIVES], providers:[AuthService], inputs:['userLoggedIn'] }) @RouteConfig([ {path:'/logout', name: 'Logout', component: AuthComponent}, ]) export class AppComponent implements OnInit, CanReuse{ constructor(private _auth_service: AuthService){ this._auth_service.authChanged.subscribe(data=>this.authChangedHandler(data)); } public authChangedHandler($event){ alert($event); } } ...
auth.component.ts (short version)
export class AuthComponent implements OnInit, CanReuse{ public loggedIn = false; public user = {}; @Output() authChanged: EventEmitter<string>; public selectedTab = "/login"; constructor(private _router: Router, private _location:Location,private _http: Http, private _auth_service: AuthService){ this.authChanged = new EventEmitter(); this.authChanged.emit("authChanged"); } }
main.ejs (short version)
<nav (authChanged)="authChangedHandler($event)"></nav> <router-outlet></router-outlet>
auth.service.ts
export class AuthService { public authChanged: EventEmitter<string>; constructor(private _http: Http){ this.authChanged = new EventEmitter(); this.authChanged.emit("authChanged"); } }
EDIT: I added the AuthService code that I embed in the main component. Now it should work, but it does not work.
source share