无法使离子v4 CLI生成的组件正常工作

时间:2018-10-15 00:37:21

标签: javascript angular typescript ionic-framework

我目前正在使用最新的Ionic,并且很难让CLI生成组件正常工作。

我从一个空白的proyect开始,然后使用以下命令创建一个新组件:

ionic generate component my-component

该命令运行正常,并创建以下文件:

CREATE src/app/my-component/my-component.component.html (31 bytes)
CREATE src/app/my-component/my-component.component.spec.ts (664 bytes)
CREATE src/app/my-component/my-component.component.ts (293 bytes)
CREATE src/app/my-component/my-component.component.scss (0 bytes)

然后我像这样继续在主页中使用新组件:

<ion-content padding>
<my-component></my-component>
</ion-content>

app.module.ts文件的更新如下:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, RouteReuseStrategy, Routes } 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 { MyComponentComponent } from './my-component/my-component.component';

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

在离子实验室中运行该应用程序时,出现以下错误:

    错误错误:未捕获(承诺):错误:模板解析错误: “ my-component”不是已知元素

这是我的系统信息:

ionic (Ionic CLI)             : 4.2.1 
Ionic Framework               : @ionic/angular 4.0.0-beta.12
@angular-devkit/build-angular : 0.7.5
@angular-devkit/schematics    : 0.7.5
@angular/cli                  : 6.1.5
@ionic/angular-toolkit        : 1.0.0

任何想法为什么会这样?我以前在Ionic 3上工作过,却从未遇到过这个问题。

更新:

这是我的默认my-component.component.ts文件:

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

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
})
export class MyComponentComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

1 个答案:

答案 0 :(得分:0)

要在另一个组件中使用自定义组件,必须将其包含在exports数组中。

@NgModule({
  ....
  declarations: [AppComponent, MyComponentComponent],
  entryComponents: [],
  exports:[MyComponentComponent]
  ....
})
export class AppModule {}

您可以这样做,也可以将所有自定义组件放在另一个customModule中,然后将该模块导入app.component.ts页面。

您所指的组件名称错误。 MyComponentComponent类的选择器是app-my-component,因此必须使用<app-my-component></app-my-component>而不是<my-component></my-component>