J'utilise l'application ionic 5.0.0 et j'ai une page de discussion et une page d'accueil dedans. Je souhaite inclure la page de discussion dans la page d'accueil. équivalent à ng-include .
J'ai ajouté le exports[ dans mon chat.module.ts comme indiqué ci-dessous
import { Component, OnInit, OnDestroy } from '@angular/core';
import { HttpProvider } from '../../providers/http/http';
import { GlobalFunctions } from '../../providers/global-functions';
import { Router, NavigationEnd } from '@angular/router';
import { MenuController } from '@ionic/angular';
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
import * as _ from 'underscore';
import { NgxUiLoaderService } from 'ngx-ui-loader';
import { Platform } from '@ionic/angular';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit, OnDestroy {
...
}
Ensuite, j'ai importé le module de chat dans mon app.module.ts strong> comme suit
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-chat',
templateUrl: './chat.page.html',
styleUrls: ['./chat.page.scss'],
})
export class ChatPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
Ensuite, j'ai ajouté le sélecteur de composant de chat dans ma home.page.html comme suit.
<ion-header>
<ion-toolbar>
<ion-title text-center>HOME</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="homepage-content no-scroll" >
<ion-row>
...
</ion-row>
<ion-row>
...
</ion-row>
<ion-row>
<app-chat></app-chat> <!-- Here it is -->
</ion-row>
</ion-content>
Mais lorsque j'exécute mon application, j'obtiens une erreur ci-dessous dans la console.
Voici mon chat.page.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { PopoverPageModule } from './popover/popover.module';
import { HttpClientModule } from '@angular/common/http';
import { GlobalFunctions } from '../providers/global-functions';
import { AuthGuard } from '../providers/security/auth-guard';
import { HTTP } from '@ionic-native/http/ngx';
import { HttpProvider } from '../providers/http/http';
import { HttpAngularProvider } from '../providers/http/http-angular';
import { HttpNativeProvider } from '../providers/http/http-native';
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
import { NgxUiLoaderModule } from 'ngx-ui-loader';
import { IonicGestureConfig } from '../providers/IonicGestureConfig';
import { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
import { ChatPageModule } from './chat/chat.module';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
HttpClientModule,
IonicModule.forRoot(),
AppRoutingModule,
PopoverPageModule,
NgxUiLoaderModule,
ChatPageModule // --> Here it is
],
providers: [
HttpProvider,
HttpAngularProvider,
HttpNativeProvider,
GlobalFunctions,
AuthGuard,
StatusBar,
ScreenOrientation,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
{ provide: HAMMER_GESTURE_CONFIG,useClass: IonicGestureConfig
},
HTTP
],
bootstrap: [AppComponent]
})
export class AppModule {}
Voici ma page d'accueil. ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ChatPage } from './chat.page';
const routes: Routes = [
{
path: '',
component: ChatPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
exports: [ChatPage], // --> Here it is
declarations: [ChatPage]
})
export class ChatPageModule {}
Voir la structure de mon code du module de discussion et du module d'accueil. Les deux sont des modules différents.
p >
5 Réponses :
Je sais que vous avez deux modules différents et que vous souhaitez les utiliser dans un module différent. Voici un exemple de la façon dont le composant Hello est partagé par le composant d'application. L'exemple de travail ici.
Ceci est fait dans le même module. Si vous voulez, vous pouvez suivre la même chose.
https://stackblitz.com/edit/angular-8-viewchild -exemple-cazvny
Cela fonctionne bien lorsque j'ajoute un composant de chat en tant que déclaration dans le module d'accueil. Mais je ne peux pas déclarer le composant de chat dans aucun autre module. Puisqu'il affiche "déplacez la déclaration vers un autre module qui importe à la fois les modules de discussion et d'accueil".
@AbhilashShajan La déclaration d'un seul composant doit être dans le module parent, pour utiliser un composant dans différents modules, il faut créer ce qu'on appelle un module partagé, ce module partagé serait celui qui déclare le composant et aussi l'exporter , afin que tout module de votre application souhaitant l'utiliser, puisse importer le module partagé.
Oui Daniel j'ai importé le module de chat dans mon module d'accueil comme tu l'as dit. Je peux maintenant voir le modèle de chat dans mon modèle d'accueil. Mais le problème est que le modèle de page d'accueil a disparu. le modèle de chat vient de remplacer le modèle d'accueil. Comment voir les deux?
Puisque le composant HomePage n'est pas déclaré dans app.module ,
Vous devez importer
ChatPageModuledans le module oùHomePagecomposant est déclaré.
Est-il possible que vous ayez un loginPageModule et que home.page.html fasse partie de ce module?
Vous n'avez pas besoin d'importer ChatPageModule dans AppModule , vous devez importer ChatPageModule dans LoginPageModule . p>
Dans tous les cas, vous avez écrit dans du html de votre LoginPageModule et votre erreur est précisément que vous ne l'avez pas a importé le module ChatPage dans LoginPageModule .
Je n'ai jamais entendu parler d'inclusion d'une page elle-même dans une autre page.
Ce que je m'attendrais à voir, c'est que vous génériez un composant avec la ligne de commande comme:
ionic generate component components/chat
Ensuite, vous obtiendriez un groupe de chat.component. ts (scss, html, etc.).
Refactorisez tout ce qui se trouve dans app-chat dans le composant.
Ensuite, vous besoin de créer votre propre module partagé pour pouvoir le réutiliser sur plusieurs pages:
Une page ne peut pas être utilisée dans une autre page. Pour cela, ionic a des composants qui forment une petite partie de tout l'écran / page.
Cela peut être fait de la manière suivante:
Au lieu de la page de discussion, créez un composant de discussion et utilisez-le ensuite dans vos pages / components où vous voulez.
Utilisez le sélecteur de votre composant de chat dans votre composant / page parent.
Dans le fichier ts du composant enfant:
<app-chat-component></app-chat-component>
Montrez l'erreur.
@Adrita Sharma Erreur ajoutée
home.page.html est un composant non? et une partie de quel module? Je ne le vois pas dans app.module
Hii Abhilash .. !! assurez-vous que vous utilisez le sélecteur correct pour ce, est-ce la même chose dans le fichier Chat.module.ts?
Salut HaSnen Tai, j'ai ajouté le fichier chat.page.ts
Afficher le composant de la page d'accueil
S'il vous plaît, affichez les premières lignes de chat-page.component.ts
Ce serait bien si vous pouviez montrer une démo en ligne en violon
Salut Daniel, j'ai déjà ajouté un composant de page de chat.
Salut Adrita Sharma Donc, vous dites que je dois importer le module d'accueil également dans app.module.ts?
Je dis que HomePage est un composant et doit faire partie d'un module. Quel module?
Est-il possible que vous ayez un loginPageModule et que home.page.html fasse partie de ce module?
Dans tous les cas, vous avez écrit dans un html de votre
LoginPageModule et votre erreur est précisément que vous n'avez pas importé le < code> Module ChatPage dansLoginPageModule.