一个组件只能在一个模块中声明.如果你试图在多个模块中声明它,你会得到这个错误
错误:键入...是2个(或更多)模块声明的一部分:
这个问题的解决方法很简单.如果需要在多个模块中使用一个组件,请将其添加到需要它的模块的exports数组中.
假设我们有一个名为GreetingsComponent的组件,它在模块TestModule中声明,我想在模块AppModule中声明的AppComponent中使用它.我将简单地将其添加到TestModule的exports数组中,如下所示
import {NgModule} from '@angular/core';
import {GreetingComponent} from './greeting.component';
@NgModule({
declarations:[GreetingComponent],
exports:[GreetingComponent]
})
export class TestModule
{
}
现在,as AppModule有imported TestModule,这样一来,TestModule中的exports array中的Components, Directive, Pipes etc将自动可用于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 { }
现在,您只需在AppComponent中使用GreetingsComponent
<greetings></greetings>
这里有StackBlitz人在工作.
干杯