Kommentar - Ich habe es geschafft, dieses Problem zu beheben, siehe unten in diesem Beitrag
Ich aktualisiere meine Angular 1.X-Anwendung mit UpgradeAdapter (ngUpgrade). Ich habe einen neuen Angular 2.0-Dienst hinzugefügt, den ich von meiner Angular 2.0-Komponente aus anrufe:
Service:
%Vor% In meinem bootstrap.ts
habe ich:
Was mache ich hier falsch?
BEARBEITEN :
Ich gebe meinem Angular 2.0-Dienst einen anderen Dienst (Angular 1.X-Upgrade-Dienst), und es funktioniert:
%Vor%Bootstrap.ts:
%Vor%BEARBEITEN 2 :
Als ich meinen ES5-Code sah, fand ich diesen Code:
%Vor% Wie Sie sehen können -% http
injection to MyService
. Wenn ich meinen Dienstkonstruktor ändere, um diese Syntax zu verwenden
Jetzt bekomme ich den folgenden Fehler:
%Vor%Lösung für das Problem:
So ist es mir schließlich gelungen, einen Hinweis aus @PierreDuc zu verwenden:
Ich habe den Konstruktor für MyService folgendermaßen geändert:
%Vor% Und ich habe HTTP_PROVIDERS
als Provider zu meiner Komponente hinzugefügt (die den Service nutzt):
(in meiner ng 2 Komponente:)
providers: [MyService, HTTP_PROVIDERS]
Keine Notwendigkeit für @Injectable
oder addProvider
in meinem Bootstrap.
Ich verstehe nicht ganz, warum das passiert und warum diese Lösung funktioniert hat. Ich werde es gerne erklären, wenn jemand es hier weiß.
Lösung Bearbeiten:
Nach ein wenig Lesen verstehe ich jetzt DI besser. Ich kann das addProvider(HTTP_PROVIDERS)
verwenden, anstatt einen Anbieter für jede Komponente zu definieren (es wird für alle Komponenten verfügbar sein). Das einzige Rätsel, das übrig bleibt, ist, warum private http: Http
nicht funktioniert, während @Inject(Http) http
funktioniert. Irgendeine Idee???
Sie sollten das HTTP_PROVIDERS
im Bootstrap und nicht nur Http
hinzufügen. Probieren Sie dies für bootstrap.ts
Bearbeiten
Und darüber hinaus muss MyService.ts
einen @Injectable()
Dekorator haben, damit eckal weiß, dass es seine Abhängigkeiten injizieren muss. Der Grund für die Injektion von dataService
ist, dass Sie den Dekorator @Inject
verwendet haben. Probieren Sie dies für MyService.ts
Tags und Links angular typescript