Пользовательский компонент Ionic 2/3 с ionic cli

Если вы используете ionic cli для создания компонента

ionic g component foobar

А затем пытается использовать этот селектор

<foobar></foobar>

Ошибка

Ошибка: ошибки синтаксического анализа шаблона: «foobar» не является известным элементом:

Это без каких-либо изменений в коде.

В сгенерированном файле .ts есть предлагаемая ссылка для более подробной информации.

/**
 * Generated class for the FoobarComponent component.
 *
 * See https://angular.io/docs/ts/latest/api/core/index/ComponentMetadata-class.html
 * for more info on Angular Components.
 */

Но это просто переходит на страницу 404.

Кто-нибудь знает, известная ли это проблема и есть ли обходной путь?


person Community    schedule 11.05.2017    source источник
comment
Если я правильно понимаю, вы используете последнюю версию Ionic 3, в которой есть некоторые проблемы с предоставлением новой функции отложенной загрузки. Пожалуйста, прочтите об этом здесь Они обновят ionic-cli скоро.   -  person DjezzzL    schedule 12.05.2017


Ответы (1)


У меня была аналогичная проблема, и мне потребовалось некоторое время, чтобы понять это. Я использовал инструмент CLI для создания пользовательского компонента, который, похоже, имеет небольшую проблему. В моем custom-component.module.ts генератор добавил

...
import { IonicPageModule } from 'ionic-angular';
...
imports: [
    IonicPageModule.forChild(CustomComponent),
  ],
...

Изменение этих строк на

...
import { IonicModule } from 'ionic-angular';
...
imports: [
    IonicModule,
  ],
...

Исправляет основную проблему. Чтобы использовать <custom-component> в HTML-коде страницы, вам нужно импортировать custom-component.module в модуль страницы, где вы хотите его использовать. Например, если вы хотите использовать свой компонент на главной странице, отредактируйте home-page.module.ts

...
import { CustomComponentModule } from "../../components/custom-component/custom-component.module";
...
imports: [
    CustomComponentModule,
    IonicPageModule.forChild(JobsPage),
  ],
...

И это, кажется, работает для меня!

person David    schedule 24.05.2017