Компонент может быть объявлен в одном и только одном модуле.Если вы попытаетесь объявить его более чем в одном модуле, вы получите эту ошибку
Ошибка: Тип ... является частью объявлений 2 (или более) модулей:
Решение этой проблемы довольно простое.Если вам нужно использовать компонент в нескольких модулях, добавьте его в массив exports того модуля, который объявил .
Допустим, у нас есть компонент с именем GreetingsComponent , который объявлен в модуле TestModule , и я хочу использовать его в AppComponent , то естьобъявлено в AppModule .Я просто добавлю его в массив exports TestModule вот так
import {NgModule} from '@angular/core';
import {GreetingComponent} from './greeting.component';
@NgModule({
declarations:[GreetingComponent],
exports:[GreetingComponent]
})
export class TestModule
{
}
Теперь, когда AppModule имеет импортированных TestModule и таким образом все конструкции, которые должны Компоненты, Директивы, Трубы и т. Д. , которые находятся в массиве экспорта TestModule , должныбыть автоматически доступным для AppModule.
AppModule.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import {TestModule} from './test.module';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule, FormsModule, TestModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Теперь вы можете просто использовать GreetingsComponent в AppComponent
<greetings></greetings>
Работающий StackBlitz здесь.
ура.