Das Eingeben von Modulen in den erweiterten Controller (ES6) führt zu einem unbekannten Providerfehler

9

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:

  1. Annotation und Abhängigkeiten von ModalCtrlChild
  2. wurden entfernt
  3. Annotationen und Abhängigkeiten von ModalCtrl wurden entfernt, sie wurden jedoch untergeordnet

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.

    
caiocpricci2 04.05.2016, 15:17
quelle

2 Antworten

1

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?

    
sourdoughdetzel 09.05.2016 01:29
quelle
1

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%     
eenagy 13.05.2016 10:08
quelle