如何在Ionic v4中生成有效的自定义组件?

问题描述 投票:2回答:1

我是Ionic的新手,正在使用v4,是Angular的新手,也是Typescript的新手,所以如果我提出愚蠢的问题,请多多包涵,请原谅我。我在Linux上。

我已经开始使用一个新的Ionic应用程序

$ ionic start
[...]
Project name: comptest
Framework: Angular
Starter template: tabs
[...]

然后我尝试了:

$ cd comptest
$ ionic serve -l
[...]
? Install @ionic/lab? Yes
[...]

浏览器打开,应用正常运行。然后,我尝试生成一个新的自定义组件:

$ ionic generate component mySpan1
[...]
[OK] Generated component!

其中创建了my-span1-component.ts,其中包含:

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

@Component({
  selector: 'my-span1',
  templateUrl: './my-span1.component.html',
  styleUrls: ['./my-span1.component.scss'],
})
export class MySpan1Component {

  constructor() { }

}

[请注意,我编辑了选择器并使它看起来只是my-span1,而不是默认的app-my-span1,但是我没有碰其他任何东西,甚至没有html <p>标记,将来它会变成[C0 ]出于明显的原因。然后我尝试在tab1页面中使用<span>,因此我编辑了<my-span1>并添加了tab1.page.html标签:

<my-span1>

此编辑后,页面停止工作。在浏览器控制台中,我收到此错误:

'my-span1'不是已知元素

谷歌搜索,我发现了另一个SO问题:<ion-content> <my-span1></my-span1> <!-- This is my edit --> <ion-card class="welcome-card"> <img src="/assets/shapes.svg" alt="" /> [...]

但是至少可以接受的答案很难说,当涉及到创建一个新模块时,我进入了未知的领域。无论如何,我尝试了Ionic 4 cannot import custom component is not a know element,并且它起作用了,然后我在该新模块中声明了MySpan1Component:

ionic generate module components

然后我将新模块导入到应用模块中,如下所示:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MySpan1Component } from '../my-span1/my-span1.component';

@NgModule({
  declarations: [
    MySpan1Component
  ],
  imports: [
    CommonModule,
  ]
})
export class ComponentsModule { }

但是我在控制台中仍然遇到相同的错误,例如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 { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { ComponentsModule } from './components/components.module'; @NgModule({ declarations: [AppComponent], entryComponents: [], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, ComponentsModule], providers: [ StatusBar, SplashScreen, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], bootstrap: [AppComponent] }) export class AppModule {} 。而且我不知道下一步该怎么做。

[我发现'my-span1' is not a known element的另一个问题建议相同的解决方案,或者将我的组件添加到here数组:也尝试过,但是没有运气(控制台中有相同错误):

exports

我在使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 { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; //import { ComponentsModule } from './components/components.module'; import { MySpan1Component } from './my-span1/my-span1.component'; @NgModule({ declarations: [AppComponent, MySpan1Component], entryComponents: [], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, /*ComponentsModule*/], exports: [MySpan1Component], providers: [ StatusBar, SplashScreen, { provide: RouteReuseStrategy, useClass: IonicRouteStrategy } ], bootstrap: [AppComponent] }) export class AppModule {} 正常工作的代码中缺少什么?

angular ionic-framework ionic4 custom-component
1个回答
1
投票

您走在正确的轨道上:

  • 创建新应用:离子启动my-new-app
  • 生成新成分:离子生成my-span1
  • 将其作为导入添加到您的tab1.page.module +添加到声明中

例如:

my-span1
© www.soinside.com 2019 - 2024. All rights reserved.