Ich habe eine angular2 Anwendung, in der ich eine Login-Seite haben. Nach der Anmeldung möchte ich den Benutzernamen in der Header-Komponente anzeigen.zu teilen Daten zwischen Services und Komponenten
@Output() getUserName = new EventEmitter();
im Authentifizierungsmethode Service
authenticate(loginRequest) {
let headers = new Headers({ 'Content-Type' : 'application/json' });
let options = new RequestOptions({ headers: headers });
let authenticateResp = this.http.post("http://localhost:8080/authenticate", JSON.stringify(loginRequest), options).map(result => result.json());
authenticateResp.subscribe((authenticate => {
this.getUserName.emit("My Name");
}));
return authenticateResp;
}
In der Header-Komponente in Konstruktor
@Component({
.....
providers:[LoginService]
})
export class HeaderComponent {
userName : string;
constructor(private loginService : LoginService) {
loginService.getUserName.subscribe(authenticated => this.setName(authenticated));
}
setName(authenticated) {
this.userName = authenticated;
}
}
Wenn ich debuggen, kann ich das Ereignis Emissions Code immer ausgeführt, aber der Code in subscribe in der Komponente wird nicht aufgerufen. Was mache ich hier falsch?
Jede mögliche Hilfe schätzen
Ich schlage vor, Sie, diese Frage zu prüfen: http://stackoverflow.com/questions/36076700/what-is-the-proper-use- of-an-eventemitter, sollten Sie nicht '@ Output' in Ihre Dienste – echonax