Ich versuche, einige $_SESSION
Variablen von PHP
bis Angular
zu bekommen. Ich erstellte eine Injectable
Klasse mit der Bezeichnung Globals
und definierte diese Klasse in Providers
von AppModule
.Angular 4 Dependency Injection mit Ajax Call
Hier ist mein globals.ts:
import { Injectable } from '@angular/core';
@Injectable()
export class Globals {
errorMessage: string;
activeUser: any;
test: string = "test string";
constructor(private userService: UserService) {
this.getActiveUser();
console.log(this.activeUser); //undefined
}
getActiveUser(){
this.userService.getActiveUser()
.then(
user => this.activeUser = user,
error => this.errorMessage = <any>error
);
}
}
Der obige Protokollierung Befehl funktioniert nach dem Laden des gesamte Projekt abgeschlossen ist. Aber es ist eine Abhängigkeit für mich und ich bekomme den zurückgegebenen Wert in meinem Konstruktor.
Eine beispielhafte Komponente ist unten:
import { Component } from '@angular/core';
import { Globals } from "../globals";
@Component()
export class ExampleComponent implements OnInit, AfterViewInit {
constructor(
private globals: Globals
) {
console.log(this.globals.activeUser); //undefined
console.log(this.globals.test); //"test string"
}
}
ich auch eine Plunker dafür geschaffen: https://embed.plnkr.co/zRmkQdfqYDBTAoQPqJ5V/
EDIT: Ich weiß, dass es durch Asynchronität verursacht wird, was ich brauche, ist eine Lösung für erhalten activeUser
vor der Initialisierung
Jede Hilfe wird geschätzt.
lesen auf Asynchronität up :) – Alex
Ich weiß, was Asynchronität ist und ich weiß auch, dass dieses Problem dadurch verursacht wird. Was ich brauche, ist keine Lektion darüber, sondern eine Lösung. – yenerunver
Sie sollten sorgfältig lesen @ AJT_82 "Der obige Protokollierungsbefehl funktioniert, nachdem das Laden des gesamten Projekts abgeschlossen ist. Aber es ist eine Abhängigkeit für mich und ich habe den zurückgegebenen Wert in meinem Konstruktor." – yenerunver