Angular2 APP_INITIALIZER nicht konsistent

Ich verwende APP_INITIALIZER so wie es in @ empfohlen wiDie Antwort: Mein Dienst gibt ein Versprechen zurück, wartet jedoch nicht immer auf die Auflösung und ich sehe, dass meine Komponente console.logging undefiniert ist und der Dienst das heruntergeladene Objekt protokolliert.

Ich brauche die App, um nichts zu tun, bevor diese Daten geladen sind.

app.module.ts

import { NgModule, APP_INITIALIZER } from '@angular/core';
import { Http, HttpModule, JsonpModule } from '@angular/http';
import { UserService } from '../services/user.service';

<...>
@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    FormsModule,
    JsonpModule,
    routing
  ],
  declarations: [
    AppComponent,
    <...>
  ],
  providers: [
    <...>
    UserService,
    {provide: APP_INITIALIZER,
      useFactory: (userServ: UserService) => () => userServ.getUser(),
      deps: [UserService, Http],
      multi: true
    }
  ],
  bootstrap: [AppComponent]

user.service.ts

@Injectable()
export class UserService {

    public user: User;
    constructor(private http: Http) { }

    getUser(): Promise<User> {
        console.log('get user called');
        var observable= this.http.get('/auth/getuser', { headers: getHeaders() })
            .map(extractData);

        observable.subscribe(user => {this.user = user;
            console.log(this.user)});
        return observable.toPromise();
    }
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage