web-dev-qa-db-fra.com

Ionic Uncaught (promis): lien non valide

j'ai probablement problème avec this.nav.Push dans Ionic. J'ai fait une page de connexion/enregistrement, mais lorsque je me connecte, je reçois ce message d'erreur. Je dois ajouter le code de login.ts et par exemple home.ts (qui est la page principale)?

Erreur d'exécution 
Non capturé (promis): lien non valide: page d'accueil


Erreur: Non capturé (promis): lien non valide: page d'accueil at d ( http: // localhost: 8100/build/polyfills.js: 3: 3991 ) at l ( http: // localhost: 8100/build/polyfills.js: 3: 3244 ) à Object.reject ( http: // localhost: 8100/build/polyfills.js: 3: 2600 ) à l'adresse NavControllerBase._fireError ( http: // localhost: 8100/build/main.js: 45465: 16 ) à l'adresse NavControllerBase._failed ( http: // localhost: 8100/build/main.js: 45453: 14 ) à http: // localhost: 8100/build/main.js: 45508: 59 à t.invoke ( http: // localhost: 8100/build/polyfills.js: 3: 11562 ) à Object.onInvoke ( http: // localhost: 8100/build/main.js: 4622: 37 ) à t.invoke ( http: // localhost: 8100/build/polyfills.js: 3: 11502 ) at n.run ( http: // localhost: 8100/build/polyfills.js: 3: 6468 ) à http: // localhost: 8100/build/polyfills.js: 3: 3767 à t.invokeTask ( http: // localhost: 8100/build/polyfills.js: 3: 12256 ) à Object.onInvokeTask ( http: // localhost: 8100/build/main.js: 4613: 37 ) à t.invokeTask ( http: // localhost: 8100/build/polyfills.js: 3: 12177 ) à l'adresse n.runTask ( http: // localhost: 8100/build/polyfills.js: 3: 7153 )

@edit: Le problème survient lorsque je souhaite me connecter à mon application. C'est le répondant du code ouvrir une session.

login.ts

public login() {
    this.showLoading()
    this.auth.login(this.registerCredentials).subscribe(allowed => {
      if (allowed) {        
       this.nav.Push('HomePage');
      } else {
        this.showError("Access Denied");
      }
    },
      error => {
        this.showError(error);
      });
    }

auth-service.ts (voici la fonction publique qui exécute ma longe et où j'ai un laissez-passer et un email que je dois taper dans mon identifiant) 

  public login(credentials) {
    if (credentials.email === null || credentials.password === null) {
      return Observable.throw("Please insert credentials");
    } else {
      return Observable.create(observer => {
        // At this point make a request to your backend to make a real check!
        let access = (credentials.password === "pass" && credentials.email === "email");
        this.currentUser = new User('Simon', '[email protected]');
        observer.next(access);
        observer.complete();
      });
    }
  }

Je ne sais pas pourquoi ce code est faux. Ma page d'accueil iny mon application est home.ts et la classe est HomePage

6
Mrfet

ce que vous devez faire est d'ajouter @IonicPage () avant '@Component' et d'importer 'IonicPage' comme ceci: import {NavController, IonicPage} from 'ionic-angular';

alors vous devez créer un module pour la page d'accueil i.e dans le répertoire de base, créez home.module.ts avec le contenu suivant 

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';

@NgModule({
  declarations: [
    HomePage
  ],
  imports: [
    IonicPageModule.forChild(HomePage),
  ],
  exports: [
    HomePage
  ]
})
export class HomePageModule {}

et recharger le projet 

15
rylxes

Le seul problème dans votre code est lorsque vous écrivez this.nav.Push('HomePage'); supprimez les guillemets '' lorsque vous appelez une page et écrivez comme ceci.

this.nav.Push(HomePage); sans guillemets.

La réponse ci-dessus est pour ionic2, dans ionic3 il y a un chargement paresseux où vous appeler comme ceci this.nav.Push('HomePage');

8
amyogiji

J'ai copié l'exemple de connexion. L'erreur est similaire.

Points de contrôle pour la page d'accueil: (1) vérifier si home.module.ts est (2) vérifier @IonicPage () avant '@Component' dans home.ts (2) supprimer HomePage de la déclaration/entryComponents dans app.module.ts face à open-error

0
Marcus

Ajoutez simplement @IonicPage () avant @component dans le fichier ts, par exemple:

@IonicPage () @ Component ({ Sélecteur: 'page-wall', TemplateUrl: 'wall.html', })

0
Omkar Joshi