【问题标题】:call a selector in another page在另一个页面中调用选择器
【发布时间】:2018-07-22 11:21:27
【问题描述】:

我在 ionic 3 中创建了一个名为 header 的页面

现在我想在主页等其他页面的顶部调用它。

下面是我的 header.ts,我希望它包含在 home.html 中

header.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';


@IonicPage()
@Component({
  selector: 'page-header',
  templateUrl: 'header.html',
})
export class HeaderPage {

  constructor(public navCtrl: NavController, public navParams: NavParams) {
  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad HeaderPage');
  }

}

// app.module.ts

import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { HeaderPage } from '../pages/header/header';

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    HeaderPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    HeaderPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

home.html

    <ion-header>
  <ion-navbar>
    <ion-title>
      Ionic Blank
    </ion-title>
  </ion-navbar>
</ion-header>

 <page-header>loading...</page-header>

<ion-content padding>
  The world is your oyster.
</ion-content>

我遇到了错误

Error: Uncaught (in promise): Error: Template parse errors:
'page-header' is not a known element:
1. If 'page-header' is an Angular component, then verify that it is part of this module.
2. If 'page-header' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

我也看过这个堆栈溢出问题:How do i call a page in another page - IONIC 2 但对我不起作用
请指教,我该怎么做?

【问题讨论】:

  • 有什么问题?你有错误吗?
  • 我没有收到任何错误,但我的 内容未显示在主页内
  • page-header.html 中有什么内容?
  • 我刚刚在我的 header.html 文件中添加了 hello hello

标签: angular ionic-framework ionic2 ionic3


【解决方案1】:

你的header.html:

<div text-center padding>Loading...</div>

header.module.ts

import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HeaderPage } from './header';

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

home.ts

<ion-header>


<ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>Home</ion-title>
  </ion-navbar>
</ion-header>
<ion-content padding>
  <page-header></page-header>
  <h3>Ionic Menu Starter</h3>

  <p>
    If you get lost, the <a href="http://ionicframework.com/docs/v2">docs</a> will show you the way.
  </p>

  <button ion-button secondary menuToggle>Toggle Menu</button>
</ion-content>

app.module.ts

@NgModule({


declarations: [
    MyApp,
    HomePage,
    ListPage
  ],
  imports: [
    BrowserModule,
    HeaderPageModule,
    IonicModule.forRoot(MyApp),
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    ListPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

【讨论】:

  • 我也做了 HeaderPage 来导出数组,但我得到以下错误:我收到此错误:错误:未捕获(承诺):错误:模板解析错误:'header-page' 不是已知元素: 1. 如果“header-page”是一个 Angular 组件,则验证它是否是该模块的一部分。 2. 如果 'header-page' 是一个 Web 组件,则将 'CUSTOM_ELEMENTS_SCHEMA' 添加到该组件的 '@NgModule.schemas' 以禁止显示此消息。
  • header.ts 中删除@IonicPage 如果你已经创建了header.module.ts 然后从它的声明中删除HeaderPage 或者删除header.module.ts,一个好主意是实现component level 模块然后在app.module.ts 中导入模块
  • 如何在 app.module.ts 中导入comon-header组件,使其出现在所有页面
  • 不工作!,你能举个例子“实现组件级模块,然后在 app.module.ts 中导入模块”
  • 我已经在上面完成了,HeaderPageModule 包含 HeaderPage,我已经在app.module.ts 中导入了该模块,它与我完美配合,您可能遗漏了一些东西,请您分享错误消息。
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 2019-09-16
  • 2012-01-30
  • 1970-01-01
相关资源
最近更新 更多