In meiner Angular-App verwende ich einen gemeinsam genutzten Dienst, bei dem es sich nicht um ein Singleton handeln muss, da die Daten ständig aktualisiert werden.Angular 4.1.3 Bei Verwendung von AOT kehrt Service Factory undefined zurück
Service Factory:
import {DataService} from '../../../../shared/services/data.service';
import {Http} from '@angular/http';
export const DataServiceProvider = {
provide: DataService,
useFactory(http: Http) {
return new DataService(http);
},
deps: [Http]
};
Wenn ich die app in JIT-Modus ausgeführt, die Fabrik funktioniert gut, aber wenn ich mit der --aot Flagge bauen, ich die folgenden Fehlermeldung.
Der zurückgegebene Dienst verfügt über eine Methode get(), die einen Aufruf an den Server sendet. Ich verstehe nicht, was in AOT diese scheinbar einfache Funktionalität bricht.
Weitere Referenz, spritze ich den Dienst im Konstruktor:
construct(
dataService: DataService
) {
super();
}
Und es in ngOnInit nennen():
ngOnOnit() {
this.subscribe(this.dataService.get(), (res) => { this.data = res });
}
ich einige Abonnement-Funktionalität haben weg von meiner Komponente abstrahiert, die handhaben Abmelden, um Speicherlecks zu verhindern, weshalb dieser Code so seltsam aussehen könnte.
ich mit AOT dachte, die angeblich auf der Kompilierung zum Scheitern verurteilt, wenn sie nicht analysiert werden konnte. Ich hatte den Code von const factoryFunction geändert = (http: Http) => return new DataService; wegen der Kompilierfehler, aber ich hätte nie gedacht, die Funktion zu exportieren! Danke vielmals. – user1119648