Ich habe eine Controller-Klasse ModalCtrl
und möchte eine untergeordnete Klasse ModalCtrlChild extends ModalCtrl
erstellen. Problem ist, wenn ich versuche, dass ich einen unbekannten Versorgerfehler in irgendwelchen der Module bekomme, die in ModalCtrl
eingesprungen werden.
Ich habe diesen Generator verwendet, um das Projekt zu erstellen, und es verwendet NgInject hinter den Kulissen, um die Abhängigkeiten zu injizieren Ich vermute, da ist etwas Lustiges passiert.
ModalCtrl:
%Vor%ModalCtrlChild:
%Vor%Fehler:
%Vor% Und ngDialog ist DEFINITIV importiert und funktioniert. Wenn delete extends ModalCtrl
von ModalCtrlChild Ich bekomme keine Fehler und mein Code läuft gut, aber ich bin nicht in der Lage, die Vererbung zu bekommen, die ich brauche. Irgendwelche Ideen geschätzt.
BEARBEITEN
Ich hatte versucht Eenagys Antwort vor dem Posten der Frage, das funktioniert auch nicht, da das Problem scheint in der Kindklasse injiziert wird, nicht in der Klasse der Eltern injiziert.
sauertoughtzel, versuchte deinen Vorschlag:
Habe genau den gleichen Fehler:
%Vor%Ich vermute, das hat mit der Art und Weise zu tun, wie babel die erweiterte Klasse konstruiert, und erlaubt nicht, dass ngInject es tut. Ich versuche hier einen Weg zu finden, manuelle Injektionen zu machen, was das Problem lösen und beweisen sollte, dass dies das Problem ist, da ich nicht genug darüber weiß, wie Babels Arbeit daran ist, dies zu beheben.
Ich nehme an, dass ngInject nicht tut, was es hinter den Kulissen tun soll, wenn Sie "super ()" von einem Konstruktor einer Unterklasse aufrufen. Ich habe bei der Suche nicht viel von ngInject gesehen, aber es könnte wegen des manuellen Aufrufs an den Konstruktor, der gerade passiert, kurzgeschlossen werden.
Wenn Sie die Abhängigkeiten in den ModalCtrlChild-Controller übernehmen und die "ngInject" -Zeichenfolge auskommentieren, dann übergeben Sie sie an den Aufruf von super (), funktioniert es wie erwartet?
Die Fehlermeldung sagt Ihnen eigentlich, was fehlt.
%Vor%Sie müssen Ihre Abhängigkeiten auch in Ihrer Unterklasse deklarieren.
Also statt dies
%Vor%Sie müssen die Parameter übergeben.
%Vor%Es gibt keine Möglichkeit, dass ngInject weiß, welche Abhängigkeiten benötigt werden. Wie sollte es wissen? In der realen Welt könnte es Dutzende von Unterklassen von ngDialog geben, die dem Vertrag entsprechen und als Parameter passierbar sind. Sie müssen angeben, welches benötigt wird, damit es es übergeben kann.
Stellen Sie sich als Beispiel vor, wenn Sie eine Unterklasse von ngDialog namens ngPopupDialog haben.
Und deine Beispielunterklasse. Folgendes könnte anstelle von ngDialog verwendet werden und würde mit dem Super übereinstimmen.
%Vor%Tags und Links javascript angularjs webpack ecmascript-6 babeljs