web-dev-qa-db-fra.com

Erreur "Aucune fabrique de composants trouvée pour" lors d'une tentative d'envoi d'une page à une autre

Je reçois une erreur en essayant de passer d'une page à une autre. Lorsque j'essaie de publier sur la même page, l'erreur ne sera pas générée. Seulement je reçois une erreur en poussant d'une page à une autre. 'setRoot ()' ne donne pas non plus d'erreur.

this.navCtrl.Push( Page7 );

J'ai ajouté la page 7 à app.module.ts.

import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';

import { Page1 } from '../pages/page1/page1';
import { Page2 } from '../pages/page2/page2';
import { Page3 } from '../pages/page3/page3';
import { Page4 } from '../pages/page4/page4';
import { Page5 } from '../pages/page5/page5';
import { Page6 } from '../pages/page6/page6';
import { Page7 } from '../pages/page7/page7';

@NgModule({
declarations: [
MyApp,
Page1,
Page2,
Page3,
Page4,
Page5,
Page6,
Page7
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
Page1,
Page2,
Page3,
Page4,
Page5,
Page6,
Page7
],
providers: []
})

export class AppModule {}

Ceci est une application ionic 2. Elle donne cette erreur.

EXCEPTION: Error in ./Page6 class Page6 - inline template:21:56 caused by: No component factory found for Page7

erreur de la console

23
Sadam Chami

J'ai trouvé la solution. Vous devez ajouter la page que vous essayez de pousser, au répertoire parent. Cela devrait également être inclus dans le @NgModule également.

import {ApiServices} from '../../providers/api-services';
import { Visualizer } from '../Page7/Page7';

@Component({
  selector: 'page-page6',
  templateUrl: 'page6.html',
  providers: [ ApiServices ],
  entryComponents:[ Page7 ]
})

export class Page6 {
    tapped(event, id ) {
      this.navCtrl.Push( Page7,{
       id: id
      });
    }
}      
34
Sadam Chami

Avez-vous mis votre composant dans exports[] dans son @NgModule? ou entryComponents?

@NgModule({
    imports: [
        MaterialModule.forRoot(),
    ],
    exports: [
        ConfirmDialog,
    ],
    declarations: [
        ConfirmDialog,
    ],
    providers: [
        DialogsService,
    ],
    entryComponents: [
        ConfirmDialog,
    ],
17
user3501373

Vous pouvez faire quelque chose comme ça.

Après avoir importé ou créé home.module.ts avec ce qui suit,

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

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

Supprimer tous les liens de la page d'importation. Par exemple,

import { HomePage } from '../pages/home/home';

Ensuite, remplacez les liens de page comme,

rootPage: any = HomePage; avec rootPage: any = 'HomePage';

Ou,

this.navCtrl.Push (HomePage); avec this.navCtrl.Push ('HomePage');

c'est-à-dire écrire le nom de la classe entre guillemets simples ou doubles.

4
Deb

Vous voudrez peut-être ne pas le mettre entre guillemets:

let modal = this.modalCtrl.create("SearchPage")

au lieu de (incorrect):

let modal = this.modalCtrl.create(SearchPage)
3
Nico

Je pense que l'erreur pourrait être la lettre UpperCase dans votre chemin lorsque vous importez, c'est un travail pour moi.

0
Sergio182k