Я пытаюсь добавить на несколько страниц мои компоненты заголовка (компонент Ionic g).
В моем компоненте Header есть 4 файла: html, scss, spec.ts и ts. Когда я добавляю этот компонент минимум на 2 страницы, я получаю эту ошибку:
Error: Type HeaderComponent is part of the declarations of 2 modules: Tab1PageModule and ProductPageModule! Please consider moving HeaderComponent to a higher module that imports Tab1PageModule and ProductPageModule. You can also create a new NgModule that exports and includes HeaderComponent then import that NgModule in Tab1PageModule and ProductPageModule.
Его мой компонент выглядит так:
import { HeaderComponent } from './../../partials/header/header.component';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ProductPage } from './product.page';
const routes: Routes = [
{
path: '',
component: ProductPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
entryComponents:[HeaderComponent],
declarations: [ProductPage,HeaderComponent]
})
export class ProductPageModule {}
Я также пробую несколько способов добавить этот компонент, но я все еще остаюсь на той же точке. Когда я добавляю NgModule к компоненту, я получаю сообщение об ошибке о директивах (не распознается). При добавлении ComoneModule (из библиотеки Ionic) мои компоненты отображаются на всех страницах, но два способа привязки не работают должным образом (не обновляются);
буду очень благодарен за помощь
РЕДАКТИРОВАТЬ Я пытаюсь создать общую модель (Header.components.module.ts), но когда я использую общий модуль, я получаю сообщение об ошибке:
core.js:15724 ERROR Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'ngIf' since it isn't a known property of 'ion-buttons'.
import { HeaderComponent } from './header.component';
import { NgModule,CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [CommonModule,
FormsModule,
IonicModule,RouterModule],
declarations: [
HeaderComponent,
],
exports: [
HeaderComponent
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
]
})
export class HeaderComponentsModule {}
Хорошо, Прашант Пимпале, но скажите мне, как добавить переход на все страницы - я должен импортировать или объявить эти компоненты
При объявлении компонента он должен быть объявлен только в одном модуле. Если вы хотите использовать его повторно, вам следует использовать импортировать указанный модуль в другой модуль.
Вы можете создать общий модуль, который содержит:
imports: [MySharedComponent],
exports: [MySharedComponent]
И в Tab1PageModule
, и в ProductPageModule
:
imports: [MySharedModule]
Хорошо, я пробовал так, но потом получаю ошибку: ERROR Error: Uncaught (in promise): Error: Template parse errors: Can't bind to 'ngIf' since it isn't a known property of 'ion-buttons'...
@kogutu Я не сказал очевидного, но вы должны импортировать необходимые модули ... CommonModule
для структурных директив.
Хорошо, я решаю проблему, я забыл добавить «CUSTOM_ELEMENTS_SCHEMA», и я должен добавить RouterModule, потому что routerlink не работает. Но теперь мне интересно, почему привязка двух данных не работает. Когда я использовал декларацию для импорта компонентов, все было в порядке.
Двусторонняя привязка @kogutu - это FormsModule
, опять же очевидно, но когда я говорил об «очевидном» в своем предыдущем комментарии, я думал, что вы поняли ...
@kogutu Тогда, пожалуйста, укажите минимальный воспроизводимый пример вашей проблемы, потому что только с этим кодом я не могу вам сказать!
Вы выиграли :) Я простой урок - при добавлении компонента ionic g нам нужно добавить необходимую библиотеку для импорта, которую мы хотим использовать (в этом примере: routerModule и formModule), а при использовании директив ionic нам нужно добавить CUSTOM_ELEMENTS_SCHEMA
@kogutu, поскольку вы используете Ionic 4, теперь он использует веб-компоненты, поэтому каждый раз, когда вы добавляете ion-что угодно, вам также нужно импортировать IonicModule.
Самый простой способ решить эту проблему — создать файл module.ts для Headercomponent и добавить его в массив импорта.
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { HeaderComponent } from './header.component';
@NgModule({
imports: [CommonModule, IonicModule],
declarations: [HeaderComponent ],
exports: [HeaderComponent ]
})
export class HeaderComponentModule{}
как ясно говорит ошибка: удалить
HeaderComponent
из любого