'ion-header' 不是已知元素 ionic 5

abh*_*thi 16 ionic-framework angular

以下是我采取的步骤

  1. 我使用ionic start template blank创建了一个 ionic 5 的新项目
  2. 将 angular 更新为 angular 9
  3. 使用ng g page main创建了一个新的页面模块
  4. 使用延迟加载在 AppRoutingModule 中列出。

我收到以下错误

ERROR in src/app/pages/main/main.page.html:1:1 - error NG8001: 'ion-header' is not a known element:
1. If 'ion-header' is an Angular component, then verify that it is part of this module.
2. If 'ion-header' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

1 <ion-header>
  ~~~~~~~~~~~~

  src/app/pages/main/main.page.ts:5:16
    5   templateUrl: './main.page.html',
                     ~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component MainPage.
src/app/pages/main/main.page.html:2:3 - error NG8001: 'ion-toolbar' is not a known element:
1. If 'ion-toolbar' is an Angular component, then verify that it is part of this module.
2. If 'ion-toolbar' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress
this message.

2   <ion-toolbar>
    ~~~~~~~~~~~~~

  src/app/pages/main/main.page.ts:5:16
    5   templateUrl: './main.page.html',
                     ~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component MainPage.
src/app/pages/main/main.page.html:3:5 - error NG8001: 'ion-title' is not a known element:
1. If 'ion-title' is an Angular component, then verify that it is part of this module.
2. If 'ion-title' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

3     <ion-title>main</ion-title>
      ~~~~~~~~~~~

  src/app/pages/main/main.page.ts:5:16
    5   templateUrl: './main.page.html',
                     ~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component MainPage.
src/app/pages/main/main.page.html:7:1 - error NG8001: 'ion-content' is not a known element:
1. If 'ion-content' is an Angular component, then verify that it is part of this module.
2. If 'ion-content' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress
this message.

7 <ion-content>
  ~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

我错过了一些非常明显的东西。

以下是代码

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 { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, BrowserAnimationsModule],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

app-routing.module.ts

import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';

const routes: Routes = [
  {
    path: '',
    loadChildren: () => import('./pages/main/main-routing.module').then(m => m.MainPageRoutingModule)
  },
];

@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

主模块.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

import { IonicModule } from '@ionic/angular';

import { MainPageRoutingModule } from './main-routing.module';

import { MainPage } from './main.page';

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    IonicModule,
    MainPageRoutingModule
  ],
  declarations: [MainPage]
})
export class MainPageModule {}
Run Code Online (Sandbox Code Playgroud)

主页.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'sxm-main',
  templateUrl: './main.page.html',
  styleUrls: ['./main.page.scss'],
})
export class MainPage implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}
Run Code Online (Sandbox Code Playgroud)

主页.html

<ion-header>
  <ion-toolbar>
    <ion-title>main</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>

</ion-content>
Run Code Online (Sandbox Code Playgroud)

iho*_*ond 17

就我而言,我收到了奇怪的 html 模板错误,包括一个 OP 描述的错误,因为我创建了新组件并忘记将其添加到模块声明中

app.module.ts

@NgModule({
...
declarations: [MyComponent]
}
Run Code Online (Sandbox Code Playgroud)

  • 真是一个红鲱鱼,谢谢你的这篇文章。我使用 CLI,但我会告诉你我是如何到达这里的。我从生成的 Ionic 示例应用程序开始,并将“选项卡”组件重构为我自己的组件。在此过程中,我忘记重新定义导致所有这些问题的“声明”。 (2认同)

Nar*_*arm 6

我遇到了同样的问题,我只是忘了将它添加IonicModule我创建的包含抛出异常的组件的新模块中

检查是否所有模块都导入 IonicModule

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { IonicModule } from '@ionic/angular';

import { ExamplePage } from './contactus.page';

@NgModule({
  imports: [
    CommonModule,
    IonicModule
  ],
  declarations: [ExamplePage]
})
export class ExampleModule {}
Run Code Online (Sandbox Code Playgroud)


小智 5

在您的app-routing.module.ts而不是main-routing.module中,您应该导入main-page-module

而不是这个:

const routes: Routes = [
  {
    path: '',
    loadChildren: () => import('./pages/yourpage/yourpage-routing.module').then(m => m.YourPageRoutingModule)
  },
];
Run Code Online (Sandbox Code Playgroud)

尝试这个:

const routes: Routes = [
      {
        path: '',
        loadChildren: () => import('./pages/yourpage/yourpage.module').then(m => m.YourPageModule)
      },
    ];
Run Code Online (Sandbox Code Playgroud)