2

Auf meiner Projektbasis auf Schluck Ich habe versucht, einen benutzerdefinierten Dekorator für Daten zu implementieren Validierung aber an einem Punkt habe ich wegen dieser Fehler stecken:Angular 2 (2.0.0 bis 2.2.0 ~) erhalten Fehler beim Hinzufügen benutzerdefinierte Dekorator mit der Zeile "import 'reflect-metadata'"

Error: Can't resolve all parameters for LoginService: (?, ?, ?).(…) 

Oder ein Fehler, wie dies in anderen Fällen:

Unexpected value 'AppComponent' declared by the module 'AppModule' 

Dann fand ich damit begonnen, einige Tests zu tun, und ich diese Zeile aus Verursachung Dieser Fehler lautet:

import "reflect-metadata"; 

Hier sind zwei Versionen der Tour-of-Helden-Tutorial:

With the error caused by importing reflect-metadata.

And with the solution.

EDIT

ich den Titel, indem die Versionen bearbeitet haben Ich bin sicher, dass dieser Fix funktioniert, ab Version 1.3.0 habe ich Probleme mit Dekorateuren und deshalb verschiebe ich meine Projekt von Zug zu webpack

+0

Diese Fehler klingen nicht so, als hätten sie etwas mit dem Dekorateur zu tun. Sagen Sie, dass alles funktioniert, wenn Sie den Dekorateur nicht benutzen? Falls ja, haben Sie 'reflect-metadata' im Projekt installiert? –

+0

ja, alles funktioniert gut, wenn ich den Dekorateur entfernen, durch die Beseitigung der @Validate die Anwendung korrekt geladen ... Ich habe die Tour-of.heroes heruntergeladen, ohne etwas zu bearbeiten und tatsächlich habe ich auch versucht, wenn neuere Version von eckigen aussehen Richtig laufen, aber mit Version 2.1.0-Beta.0 habe ich immer noch dieses Problem. Und ja, 'reflect-metadata:^0.1.3' ist bereits im package.json des Tour-of-Heroes-Projekts enthalten. – Lemmy4555

Antwort

4

Nach einem Tag Debuggen von Winkel- und meinen Code bearbeite ich die Lösung für dieses Problem gefunden nur durch eine weiteren Import Zugabe über alle anderen Einfuhren:

import "reflect-metadata"; 

zu der Klasse, die in dem Fehler erwähnt wird auch wenn die Klasse kein Objekt von reflect-metadata verwendet:

z Wenn Sie einen Fehler wie diese bekommen:

Error: Can't resolve all parameters for LoginService: (?, ?, ?).(…) 

Oder

Unexpected value 'AppComponent' declared by the module 'AppModule' 

den Import Linie auf die Klassen LoginService hinzufügen und AppComponent um das Problem zu lösen.

Here is a working version on Plunker.

EDIT

ich den Titel, indem die Versionen von Winkel bearbeitet haben, die ich dieses Problem beheben Arbeiten bin sicher, ab Version 1.3.0 Ich habe Probleme mit Dekoratoren und das ist, warum ich mein Projekt von Schluck zu Webpack verschieben

+0

Das speicherte meinen Tag –

+1

Ich hatte das gleiche Problem, wichtige Randnotiz von mir, ist den Import über alle anderen Importe in app.module.ts oder was auch immer Ihre Moduldatei benannt ist hinzuzufügen. –

0

Ich habe den gleichen Fehler in der Konsole

Error: Can't resolve all parameters for XXX: (?, ?, ?)

und ich fand meine Antwort aussehen here

ich eine Lösung mit meinen Dienstleistungen auf NgModule bieten hoffen, Ihnen zu helfen.

+0

Der Fehler tritt auf, wenn ich die Reflect-Metadaten des Imports verwende. Jedenfalls habe ich Ihre Lösung versucht, indem Sie diese Zeile '{provide:" appLoginService ", useClass: LoginService},' hinzugefügt und die Injektionspunkte wie folgt bearbeitet: '@Inject ('appLoginService') private loginService: LoginService'.Ich habe noch der Fehler – Lemmy4555

+0

Ok ich werde versuchen, ein Beispiel in Plunker in einer Stunde zu machen und hier einfügen, wenn ich die Lösung gefunden habe. –

+0

ich verstehe nicht, warum Sie dies tun wollen, aber es sieht aus wie Arbeit in meinem Beispiel [hier] (https://plnrkr.co/edit/9jx3TQqHwy9kAlMV7yoD?p=preview). Ich setze einen Debugger auf Setter in Dekoration und höre dort auf. Wenn Sie mehr erklären, was Sie tun möchten, helfen Sie vielleicht mit einem anderen Beispiel. –

2

Aufbau von Lemmy4555's Antwort (ich habe nicht die rep zu kommentieren), konnte ich dies beheben, indem Sie

hinzufügen
import "reflect-metadata"; 

zu meinem Hauptwinkelmodul. Ich kann noch nicht genau erklären, was falsch läuft, aber durch den Import der Bibliothek an anderer Stelle scheint es, dass ein Schraubenschlüssel in eckige Dekoratoren geworfen wird und die Abhängigkeitsinjektion nicht richtig funktioniert.

Es ist keine ideale Lösung, aber IMO ist es sauberer als es zu importieren, wo Fehler auftauchen.

0

Ich reparierte die ähnliche Fehler (Unexpected value 'XXX' declared by the module 'AppModule') durch die import 'reflect-metadata'; Anweisung entfernen und Typisierungen für Reflect von npm install @types/reflect-metadata --save-dev

Verwandte Themen