我正在使用ionic 5.0.0应用程序,并且其中有一个聊天页面和主页。我想将聊天页面包含在主页中。相当于ng-include。
我已经在 chat.module.ts 中添加了 exports [] ,如下所示
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 {}
然后我将聊天模块按如下所示导入我的 app.module.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 {}
然后我将聊天组件选择器添加到了home.page.html中,如下所示。
<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>
但是,当我运行我的应用程序时,控制台出现错误。
这是我的 chat.page.ts
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() {
}
}
这是我的 home.page.ts
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 {
...
}
请参阅我的聊天模块和家庭模块的代码结构。两者都是不同的模块
答案 0 :(得分:1)
由于HomePage
中没有声明app.module
组件,所以
您需要在
ChatPageModule
所在的模块中导入HomePage
组件已声明。
答案 1 :(得分:0)
我知道您有两个不同的模块,并且想在另一个模块中使用它。 这是应用程序组件如何共享Hello组件的示例。 这里的工作示例。
这是在同一模块中完成的。如果您愿意,也可以照做。
https://stackblitz.com/edit/angular-8-viewchild-example-cazvny
答案 2 :(得分:0)
是否可能有一个loginPageModule且home.page.html是此模块的一部分?
您无需将ChatPageModule
导入AppModule
,必须将ChatPageModule
导入LoginPageModule
。
在任何情况下,您都是用LoginPageModule
<app-chat></app-chat>
的html编写的,而您的错误恰恰是没有将ChatPage
模块导入LoginPageModule
中。 / p>
答案 3 :(得分:0)
我从未听说过将页面本身包含在另一个页面中。
我希望看到的是使用命令行生成一个组件,例如:
ionic generate component components/chat
然后,您将获得一组chat.component.ts
(scss,html等)文件。
将app-chat
中的所有内容重构为组件。
然后,您需要创建自己的共享模块,以便可以在多个页面上重复使用它:
答案 4 :(得分:0)
不能在另一页上使用一页。为此,离子具有的成分占整个屏幕/页面的一小部分。
可以通过以下方式完成:
创建聊天组件,而不是聊天页面,然后在您想要的页面/组件中使用它。
在父组件/页面中使用聊天组件的选择器。
在子组件ts文件中:
@Component({
selector: 'app-chat-component', // <---- This is the selector name
templateUrl: './chat-component.html',
styleUrls: ['./chat-component.scss'],
})
在父组件/其他页面的HTML文件中:
<app-chat-component></app-chat-component>
还创建components.module文件,然后在页面中导入要使用的所有组件,然后在page.module文件中导入ComponentsModule。