Ionic 4 自定义组件
Ionic 4 custom components
如何在 运行 命令 ionic g component myComponent
之后加载 ionic 4 中的组件?我想将新生成的自定义组件添加到我的主页。
在您的 src/components 文件夹中
myComponent.html:
//Here your component HTML Code. For example:
<ion-list radio-group (ionSelect)="change($event, item.type);"
...
</ion-list>
components.module.ts:
import {myComponentComponent} from "./myComponent/myComponent";
@NGModule({
declatations: [myComponentComponent],
imports:[],
exports: [myComponentComponent]
})
export class ComponentsModule{}
在您的 src/app 文件夹中
app.module.ts:
import { MyComponentComponent } from "../components/myComponent/myComponent";
@NGModule({
declarations: [
yourPages....,
MyComponentComponent
]
)}
使用方法:
例如 HomePage.html:
<myComponent> </myComponent>
终于弄明白了,这是一个有效的重现:
ionic start myProject blank --type=angular
ionic g module components
ionic g component components/myComponent --export
这为 "myComponent".
添加了声明和导出到组件模块
要使用该组件,只需将 ComponentsModule
添加到页面模块中的 imports
,例如
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ComponentsModule,
RouterModule.forChild([
{
path: '',
component: HomePage
}
])
],
declarations: [HomePage]
})
export class HomePageModule { }
这样就不会向 app.module.ts
添加任何内容,这是应该的。
另请注意,如果您想在自己的自定义组件中使用任何组件,则需要将 IonicModule
添加到 components.module.ts
中的 imports
希望这对您有所帮助:-)
这是您在 components>foot-card>foot-card.ts 中的选择器:
import { Component } from '@angular/core';
@Component({
selector: 'foot-card',
templateUrl: 'foot-card.html'
})
export class FootCardComponent {
text: string;
constructor() {
console.log('Hello FootCardComponent Component');
this.text = 'Hello World';
}
}
这是你的components.module.ts:
import { NgModule } from '@angular/core';
import { FootCardComponent } from './foot-card/foot-card';
import { IonicModule } from 'ionic-angular';
@NgModule({
declarations: [FootCardComponent],
imports: [IonicModule],
exports: [FootCardComponent]
})
export class ComponentsModule {}
这是你的app.module.ts:
import { FootCardComponent } from '../components/foot-card/foot-card';
import { ComponentsModule } from '../components/components.module'
@NgModule({
declarations: [
],
imports: [
ComponentsModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
FootCardComponent
],
providers: [
]
})
export class AppModule {}
您必须在app.module.ts的入口组件中导入组件模块并在入口组件中声明组件名称。
在 components.module.ts 中,您必须声明并导出组件,但不要忘记导入 IonicModule。
我遇到了同样的问题,但没有人告诉我导入 IonicModule 在 Components.module.ts 和 app.module.ts 中,只添加到 entryComponent 并导入 componentModule。
关键是要包含一个新模块,专门用于您的自定义组件。
我只是不明白为什么命令 "ionic generate component components/myComponent --export" 不再创建这个过时的模块。我经历了同样的事情 problem here。
完成以上所有操作后...
只在home.page.html工作过
在我的组件名称前添加 app,例如:
<app-my-component></app-my-component>
基本上,ionic g component myComponent
将更新 app.module.ts 并在应用程序文件夹中创建组件。
但是如果你想要一种更优雅的方式来添加组件。以下是步骤:
ionic g module components
将生成一个名为 components
的模块文件夹。然后生成一堆组件:
ionic g component components/myComponent --export
ionic g component components/myComponent2 --export
ionic g component components/myComponent3 --export
ionic g component components/myComponent4 --export
里面components.module.ts可以这样写:
...
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { MyComponentComponent } from './my-component/my-component.component';
import { MyComponentComponent2 } from './my-component2/my-component2.component';
import { MyComponentComponent3 } from './my-component3/my-component3.component';
import { MyComponentComponent4 } from './my-component4/my-component4.component';
@NgModule({
declarations: [
MyComponentComponent,
MyComponentComponent2,
MyComponentComponent3,
MyComponentComponent4
],
imports: [
CommonModule,
FormsModule,
IonicModule,
],
exports: [
MyComponentComponent,
MyComponentComponent2,
MyComponentComponent3,
MyComponentComponent4
]
})
export class ComponentsModule {}
然后确保在 app.module.ts
:
中导入组件模块
...
import { ComponentsModule } from './components/components.module';
...
@NgModule({
declarations: [AppComponent],
imports: [
...
ComponentsModule,
...
],
providers: [
...
],
bootstrap: [AppComponent]
})
export class AppModule {}
要测试组件,您需要重新创建页面或组件。
ionic g page testing
将组件模块导入您的测试 component/page 或(类似地导入您当前的主页):
...
import { ComponentsModule } from '../components/components.module';
...
@NgModule({
imports: [
...
ComponentsModule,
...
],
declarations: [TestingPage]
})
export class TestingPageModule {}
最后,只需使用组件选择器将组件写入测试页面即可。例如
<app-my-component></app-my-component>
<app-my-component2></app-my-component2>
<app-my-component3></app-my-component3>
<app-my-component4></app-my-component4>
希望这可能有所帮助。
只需输入以下命令即可生成自定义组件
离子g分量components/Component-Name
将组件添加到 html
在 Ionic 6.11.0 上测试此解决方案。完美运行。
创建名为 'FeaturedProduct' -
的可重用组件的流程
第 1 步:创建组件 ionic g component components/FeaturedProduct
第 2 步:为此组件创建一个模块。
ionic g module components/FeaturedProduct
步骤 3:将 FeaturedProductComponent 导入 featured-product.module.ts 文件
@NgModule({
declarations: [FeaturedProductComponent],
exports: [FeaturedProductComponent],
imports: [
CommonModule
]
})
第 4 步:在所需页面的 module.ts 文件中导入 FeaturedProductModule。
@NgModule({
imports: [
...
...
FeaturedProductModule
],
declarations: [Tab2Page]
})
现在组件可以被这个标签使用了
<app-featured-product></app-featured-product>
如何在 运行 命令 ionic g component myComponent
之后加载 ionic 4 中的组件?我想将新生成的自定义组件添加到我的主页。
在您的 src/components 文件夹中
myComponent.html:
//Here your component HTML Code. For example:
<ion-list radio-group (ionSelect)="change($event, item.type);"
...
</ion-list>
components.module.ts:
import {myComponentComponent} from "./myComponent/myComponent";
@NGModule({
declatations: [myComponentComponent],
imports:[],
exports: [myComponentComponent]
})
export class ComponentsModule{}
在您的 src/app 文件夹中
app.module.ts:
import { MyComponentComponent } from "../components/myComponent/myComponent";
@NGModule({
declarations: [
yourPages....,
MyComponentComponent
]
)}
使用方法:
例如 HomePage.html:
<myComponent> </myComponent>
终于弄明白了,这是一个有效的重现:
ionic start myProject blank --type=angular
ionic g module components
ionic g component components/myComponent --export
这为 "myComponent".
添加了声明和导出到组件模块要使用该组件,只需将 ComponentsModule
添加到页面模块中的 imports
,例如
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ComponentsModule,
RouterModule.forChild([
{
path: '',
component: HomePage
}
])
],
declarations: [HomePage]
})
export class HomePageModule { }
这样就不会向 app.module.ts
添加任何内容,这是应该的。
另请注意,如果您想在自己的自定义组件中使用任何组件,则需要将 IonicModule
添加到 components.module.ts
imports
希望这对您有所帮助:-)
这是您在 components>foot-card>foot-card.ts 中的选择器:
import { Component } from '@angular/core';
@Component({
selector: 'foot-card',
templateUrl: 'foot-card.html'
})
export class FootCardComponent {
text: string;
constructor() {
console.log('Hello FootCardComponent Component');
this.text = 'Hello World';
}
}
这是你的components.module.ts:
import { NgModule } from '@angular/core';
import { FootCardComponent } from './foot-card/foot-card';
import { IonicModule } from 'ionic-angular';
@NgModule({
declarations: [FootCardComponent],
imports: [IonicModule],
exports: [FootCardComponent]
})
export class ComponentsModule {}
这是你的app.module.ts:
import { FootCardComponent } from '../components/foot-card/foot-card';
import { ComponentsModule } from '../components/components.module'
@NgModule({
declarations: [
],
imports: [
ComponentsModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
FootCardComponent
],
providers: [
]
})
export class AppModule {}
您必须在app.module.ts的入口组件中导入组件模块并在入口组件中声明组件名称。
在 components.module.ts 中,您必须声明并导出组件,但不要忘记导入 IonicModule。
我遇到了同样的问题,但没有人告诉我导入 IonicModule 在 Components.module.ts 和 app.module.ts 中,只添加到 entryComponent 并导入 componentModule。
关键是要包含一个新模块,专门用于您的自定义组件。
我只是不明白为什么命令 "ionic generate component components/myComponent --export" 不再创建这个过时的模块。我经历了同样的事情 problem here。
完成以上所有操作后...
只在home.page.html工作过 在我的组件名称前添加 app,例如:
<app-my-component></app-my-component>
基本上,ionic g component myComponent
将更新 app.module.ts 并在应用程序文件夹中创建组件。
但是如果你想要一种更优雅的方式来添加组件。以下是步骤:
ionic g module components
将生成一个名为 components
的模块文件夹。然后生成一堆组件:
ionic g component components/myComponent --export
ionic g component components/myComponent2 --export
ionic g component components/myComponent3 --export
ionic g component components/myComponent4 --export
里面components.module.ts可以这样写:
...
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { MyComponentComponent } from './my-component/my-component.component';
import { MyComponentComponent2 } from './my-component2/my-component2.component';
import { MyComponentComponent3 } from './my-component3/my-component3.component';
import { MyComponentComponent4 } from './my-component4/my-component4.component';
@NgModule({
declarations: [
MyComponentComponent,
MyComponentComponent2,
MyComponentComponent3,
MyComponentComponent4
],
imports: [
CommonModule,
FormsModule,
IonicModule,
],
exports: [
MyComponentComponent,
MyComponentComponent2,
MyComponentComponent3,
MyComponentComponent4
]
})
export class ComponentsModule {}
然后确保在 app.module.ts
:
...
import { ComponentsModule } from './components/components.module';
...
@NgModule({
declarations: [AppComponent],
imports: [
...
ComponentsModule,
...
],
providers: [
...
],
bootstrap: [AppComponent]
})
export class AppModule {}
要测试组件,您需要重新创建页面或组件。
ionic g page testing
将组件模块导入您的测试 component/page 或(类似地导入您当前的主页):
...
import { ComponentsModule } from '../components/components.module';
...
@NgModule({
imports: [
...
ComponentsModule,
...
],
declarations: [TestingPage]
})
export class TestingPageModule {}
最后,只需使用组件选择器将组件写入测试页面即可。例如
<app-my-component></app-my-component>
<app-my-component2></app-my-component2>
<app-my-component3></app-my-component3>
<app-my-component4></app-my-component4>
希望这可能有所帮助。
只需输入以下命令即可生成自定义组件
离子g分量components/Component-Name
将组件添加到 html
在 Ionic 6.11.0 上测试此解决方案。完美运行。 创建名为 'FeaturedProduct' -
的可重用组件的流程第 1 步:创建组件 ionic g component components/FeaturedProduct
第 2 步:为此组件创建一个模块。
ionic g module components/FeaturedProduct
步骤 3:将 FeaturedProductComponent 导入 featured-product.module.ts 文件
@NgModule({
declarations: [FeaturedProductComponent],
exports: [FeaturedProductComponent],
imports: [
CommonModule
]
})
第 4 步:在所需页面的 module.ts 文件中导入 FeaturedProductModule。
@NgModule({
imports: [
...
...
FeaturedProductModule
],
declarations: [Tab2Page]
})
现在组件可以被这个标签使用了
<app-featured-product></app-featured-product>