Ionic 2: AUSNAHME: Kein Provider für NavController

8

Ich habe ein Problem mit meiner ionic 2 / angular 2 App.

Ich habe eine App.ts, wo der Loch "Auth" Teil implementiert ist.

Der Code sieht so aus:

%Vor%

Aber jetzt, wenn ich versuche, die App zu starten, bekomme ich diese Nachricht:

%Vor%

Haben Sie eine Idee, wie Sie dieses Problem lösen können? Danke!

    
Fargho 30.06.2016, 11:35
quelle

6 Antworten

12

Sie können einen NavController in einer Root-Komponente nicht über einen Konstruktor einfügen.

Also, im Grunde kannst du not etwas wie unten tun: -

%Vor%

Und das ist, was Ionic Docs zu sagen hat.

  

Was, wenn Sie die Navigation von Ihrer Root-App-Komponente aus steuern möchten? Sie können NavController nicht injizieren, da alle Komponenten, die Navigations-Controller sind, untergeordnete Elemente der Root-Komponente sind und daher nicht für die Injektion verfügbar sind.

     

Durch Hinzufügen einer Referenzvariablen zum Ion-Nav können Sie @ViewChild verwenden, um eine Instanz der Nav-Komponente zu erhalten, die ein Navigationscontroller ist (er erweitert NavController)

    
Mav55 08.03.2017 19:13
quelle
8

Sie können NavController nicht in Ihre Root-Komponente injizieren, also sollten Sie sie aus diesem Teil des Codes entfernen. Weitere Informationen finden Sie hier .

Bitte stellen Sie sicher, dass Sie bereits eine Referenzvariable in Ihrem ion-nav haben, so ( #myNav) :

) %Vor%

Und dann können Sie diese Referenz erhalten, indem Sie ViewChild verwenden. Sie können dann einfach zu einer anderen Seite navigieren, indem Sie diese Eigenschaft verwenden:

%Vor%     
sebaferreras 30.06.2016 13:09
quelle
7

Es wird empfohlen, this.app.getActiveNavs() in Ionic 3+ zu verwenden, da getActiveNav () in der nächsten Hauptversion entfernt wird. Ihre Funktion kann also wie folgt geschrieben werden:

%Vor%

Um auf den Nav-Stack zu drücken, können Sie einfach die Seite importieren (sagen wir YourPage ) und dann:

%Vor%

Altes Verhalten für Ionic 2 ist in Ionic 3 veraltet:

Sie können this.getActiveNav() in Ionic 2 (und Ionic 3) verwenden, so dass Ihre Funktion wie folgt geschrieben werden kann:

%Vor%

Bei beiden Methoden benötigen Sie keine import oder private Variable, damit dies funktioniert. Wenn Sie sich in Component befinden, beziehen Sie sich einfach auf Ihre App :

%Vor%     
Yvan 12.04.2017 10:54
quelle
2

Ok, ich habe das Navigationsgerät anstelle von NavigationController benutzt und jetzt funktioniert es.

    
Fargho 30.06.2016 13:43
quelle
0

Sie haben Ihr Nav falsch benannt;

%Vor%

Sollte

sein %Vor%

Und überprüfen Sie, ob Ihr Import korrekt ist

%Vor%     
LeRoy 30.06.2016 11:49
quelle
0

Eine Ursache für diesen Fehler ist, wenn Sie versuchen, NavController in eine Provider-Klasse zu injizieren.
So:

%Vor%

Ich hatte gerade diesen Fehler ...
Nach dem Entfernen dieser Injektion (und Refactoring des Codes), hat es funktioniert.

    
Ricardo Silva 27.01.2017 19:33
quelle

Tags und Links