Situation:Lazy Loading mit DI in Basisklasse
Ich habe eine Basisklasse Base
. Main
erweitert Base
. Main
übergibt einen Service an Base
über super()
. Base
ruft dann eine Methode für diesen Dienst auf.
Problem:
Der Service ist undefined
in Base
. Es sei denn ich console.log(_service)
vorher in der Basisklasse. Ich vermute eine Race-Bedingung, die mit dem Lazy-Laden über AsyncRoute zusammenhängt, oder vielleicht ist es ein Instanziierungsproblem ... so oder so, ich bin mir nicht sicher, wie ich überhaupt anfangen soll, es zu korrigieren.
Main.ts:
export class Main extends Base {
constructor(private _service:SomeService) {
super(this._service);
}
}
Base.ts:
@Injectable()
export class Base {
constructor(_service) {
_service.doSomething(true);
}
}
Der Code bläst bei _service.doSomething(true)
mit Fehler auf:
EXCEPTION: Error during instantiation of Main!
ORIGINAL EXCEPTION: TypeError: Cannot read property 'doSomething' of undefined
Aber wenn ich versuche, zu verfolgen warum _service ist undefiniert folgendes tun - magisch funktioniert es ???
Base.ts:
@Injectable()
export class Base {
constructor(_service) {
console.log("_service?", _service); // if this is here...
_service.doSomething(true); // ...then the error no longer occurs here
}
}
Ich sollte die Serviceklasse enthalten - es war statisch, das war das Problem. Siehe meine Antwort. Danke für die Hilfe. – oooyaya