首页 文章

无法在Angular中加载组件?

提问于
浏览
0

加载页面时出错:

compiler.es5.js:1690 Uncaught Error:类型LoginComponent是2个模块声明的一部分:LoginModule和AppModule!请
考虑将LoginComponent移动到导入LoginModule和AppModule的更高模块 . 您还可以创建一个新的NgModule,它导出并包含LoginComponent,然后在LoginModule和AppModule中导入该NgModule .

@NgModule 我有以下声明:

declarations: [AppComponent, LoginComponent, LanguageComponent]

如何解决这个问题?

在app.module文件的顶部我有导入:

import { LanguageComponent } from './language/language.component';
import  { LoginComponent } from "./login/login.component";

以下部分:

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    TranslateModule.forRoot(),
    NgbModule.forRoot(),
    CoreModule,
    SharedModule,
    HomeModule,
    AboutModule,
    LoginModule,
    AppRoutingModule,
    InMemoryWebApiModule,
    LocalStorageModule,
    ReactiveFormsModule,
    ReCaptchaModule,
    TextMaskModule,
    MdButtonModule,
    MdCheckboxModule
  ],

  declarations: [AppComponent, LoginComponent, LanguageComponent],
  providers: [
    AuthenticationService,
    HiderPipe,
    TimerService
  ],
  bootstrap: [AppComponent]
})

2 回答

  • 0

    当您想将 Component 用于另一个模块时,您必须执行以下操作 . 假设Login组件在 LoginModule 中,为了在模块外部使用此组件声明并导出组件 . 如果不导出组件,则无法使用UserModule之外的组件

    @NgModule({
      imports:[RouterModule,BrowserModule,FormsModule],
      declarations:[LoginComponent],
      exports: [LoginComponent],
    })
    export class LoginModule {
    
     }
    

    然后你不需要再次将 LoginComponent 声明到App模块中 . 只需导入 LoginComponent 所在的LoginModule .

    @NgModule({
          imports:[RouterModule,BrowserModule,FormsModule,LoginModule],
          declarations:[],
          exports: [],
        })
        export class AppModule {
    
         }
    
  • 0

    双重导入loginModuel .
    你必须在导入中删除loginModuel:[]

相关问题