Ich versuche meine Ionic2.beta11 App auf die neue Version Ionic2.rc0 zu portieren. Die meisten Dinge waren ziemlich geradlinig, aber ich habe ein Problem mit dem AoT-Compiler.Wie kann ich ein Argument an einen Provider-Konstruktor in Ionic2/Angular2 übergeben?
Ich habe eine AuthService:
@Injectable()
export class AuthService {
constructor(@Inject(Http) http: Http) {
this.http = http;
}
...
}
ich es in meine app in der src/app/app.module.ts
Datei bin Injektion:
@NgModule({
declarations: [
MyApp,
...
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
...
],
providers: [
AuthService
]
})
Alles funktioniert gut, wenn ionische läuft dienen, aber wenn ich versuche zu bauen es bekomme ich folgende Fehlermeldung:
ngc error: Error: Error at .../.tmp/app/app.module.ngfactory.ts:397:78: Supplied parameters do not match any signature of call target.
Linien 396-399:
get _AuthService_74():import44.AuthService {
if ((this.__AuthService_74 == (null as any))) { (this.__AuthService_74 = new import44.AuthService()); }
return this.__AuthService_74;
}
Das Problem ist, dass new import44.AuthService()
ein Argument des Typs http erwartet.
Die interessante Sache ist, dass alles gut funktioniert, wenn ich manuell constructor(http: Http)
durch constructor()
in der Definitionsdatei ersetze.
Ich las alle StackOverflow-Antworten, die ich finden konnte, aber keine der Lösungen löste mein Problem.
Muss ich den Konstruktor im AuthService ändern oder wie ich es in meine App injiziere? Danke für Ihre Hilfe.
Als temporäre Lösung, die ich das Argument optional und es funktioniert jetzt gemacht. Aber ich suche immer noch nach einer richtigen Lösung. –