Ionic 4 нестандартные компоненты - PullRequest
0 голосов
/ 07 ноября 2018

Как загрузить компонент в ionic 4 после выполнения команды ionic g component myComponent? Я хочу добавить новый сгенерированный пользовательский компонент на мою домашнюю страницу.

Ответы [ 6 ]

0 голосов
/ 14 июня 2019

По сути, 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';

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>

Надеюсь, это поможет.

0 голосов
/ 28 февраля 2019

После всего вышеперечисленного ...

работал только в home.page.html добавив app перед именем моего компонента, например:

<app-my-component></app-my-component>
0 голосов
/ 21 февраля 2019

Ключ должен включать новый модуль, специально для вашего пользовательского компонента.

Я просто не понимаю, почему команда "ionic generate component components / myComponent --export" больше не создает этот устаревший модуль. Я прошел через ту же самую проблему здесь .

0 голосов
/ 12 декабря 2018

Это ваш селектор в компонентах> 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.

В файле component.module.ts вы должны объявить и экспортировать компонент, но не забудьте импортировать IonicModule.

Я столкнулся с той же проблемой, но никто не сказал, чтобы импортировать IonicModule В Components.module.ts и В app.module.ts, только добавить в entryComponent и импортировать componentModule.

0 голосов
/ 09 декабря 2018

Наконец-то разобрался, вот репродукция, которая работает:

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 { }

Таким образом, к 1011 * ничего не добавляется, как и должно быть.

Также обратите внимание, что если вы хотите использовать ЛЮБЫЕ компоненты в ваших собственных пользовательских компонентах, вам нужно добавить IonicModule к imports в components.module.ts

Надеюсь, это поможет: -)

0 голосов
/ 07 ноября 2018

В вашей папке 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...