Ionic 4 нестандартные компоненты
Как загрузить компонент в ionic 4 после запуска команды ionic g component myComponent
? Я хочу добавить новый сгенерированный пользовательский компонент на мою домашнюю страницу.
Ответы
Ответ 1
Наконец-то понял, вот репродукция, которая работает:
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
к imports
в components.module.ts
Надеюсь это поможет :-)
Ответ 2
Это ваш селектор в компонентах> 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';
}
}
Это ваши компоненты .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.
Ответ 3
После всего вышеперечисленного...
работал только в home.page.html добавление приложения перед именем моего компонента, например:
<app-my-component></app-my-component>
Ответ 4
Так же, как это было сделано с Ionic 3.
Добавьте это сначала такой компонент к модулю, в консоли используйте
ionic g module components
Если вы хотите создать компонент во вложенной папке.
ionic g component components/myComponent --export
скажите, решит ли это ваш вопрос. Повеселись.
Ответ 5
Ключ должен включать новый модуль, специально для вашего пользовательского компонента.
Я просто не понимаю, почему команда "ионная генерация компонентов компонентов /myComponent --export" больше не создает этот устаревший модуль. Я прошел через эту же проблему здесь.
Ответ 6
По сути, 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
Внутри component.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';
const PAGES_COMPONENTS = [
MyComponentComponent,
MyComponentComponent2,
MyComponentComponent3,
MyComponentComponent4
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule.forRoot(),
],
declarations: [
PAGES_COMPONENTS
],
exports: [
PAGES_COMPONENTS
],
entryComponents: [],
})
export class ComponentsModule {}
и затем убедитесь, что импортировали модуль компонентов внутри app.module.ts
:
...
import { ComponentsModule } from './components/components.module';
...
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
...
ComponentsModule,
...
],
providers: [
...
],
bootstrap: [AppComponent]
})
export class AppModule {}
Чтобы протестировать компоненты, вам нужно снова создать страницу или компонент.
ionic g page testing
Импортируйте модуль компонентов в ваш тестовый компонент/страницу:
...
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-component>
<app-my-component3></app-my-component>
<app-my-component4></app-my-component>
Надеюсь, это поможет.
Ответ 7
В вашей папке 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>