Angular 5 组件不属于任何 NgModule

标签 angular

我创建了一个名为“player-create”的新组件并将其添加到 app.module 中的声明中。但是,当我尝试加载页面时,出现以下错误:

Component PlayerCreateComponent 不是任何 NgModule 的一部分,或者该模块尚未导入到您的模块中。

PlayerCreateModule.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {PlayerCreateComponent} from './player-create.component';


@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    PlayerCreateComponent
  ]
})
export class PlayerCreateModule { }

应用程序模块.ts

import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppRoutingModule } from './app-routing.module';
import { SharedModule } from "./shared/shared.module";
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';

import { AppComponent } from './app.component';
import { ContentLayoutComponent } from "./layouts/content/content-layout.component";
import { FullLayoutComponent } from "./layouts/full/full-layout.component";

import { AuthService } from './shared/auth/auth.service';
import { AuthGuard } from './shared/auth/auth-guard.service';

import * as $ from 'jquery';
import {HomeLayoutComponent} from './layouts/home/home-layout.component';
import {PlayersLayoutComponent} from './layouts/players/players-layout.component';
import {HttpClientModule} from '@angular/common/http';
import {ModalModule} from 'ngx-bootstrap';
import { PlayerCreateComponent } from './pages/player-create/player-create.component';
import { PlayerEditComponent } from './pages/player-edit/player-edit.component';

@NgModule({
    declarations: [
        AppComponent,
        FullLayoutComponent,
        ContentLayoutComponent,
        HomeLayoutComponent,
        PlayersLayoutComponent,
        PlayerCreateComponent
    ],
    imports: [
        BrowserAnimationsModule,
        AppRoutingModule,
        SharedModule,
        HttpClientModule,
        ModalModule.forRoot(),
        NgbModule.forRoot()
    ],
    providers: [
        AuthService,
        AuthGuard
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

最佳答案

由于您在另一个模块中声明了您的组件,因此您需要将 PlayerCreateComponent 添加到 PlayerCreateModule 的导出中

//PlayerCreateModule.ts 
@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    PlayerCreateComponent
  ],
  exports: [
    PlayerCreateComponent
  ]
})
export class PlayerCreateModule { }    

在你的主模块中,导入 PlayerCreateModule(不仅仅是组件)

//app.module.ts
@NgModule({
    declarations: [
        AppComponent,
        FullLayoutComponent,
        ContentLayoutComponent,
        HomeLayoutComponent,
        PlayersLayoutComponent,
        //PlayerCreateComponent <== not needed if it's declared in another module
    ],
    imports: [
        BrowserAnimationsModule,
        AppRoutingModule,
        SharedModule,
        HttpClientModule,
        ModalModule.forRoot(),
        NgbModule.forRoot(),
        PlayerCreateModule //<==== add that
    ],
    providers: [
        AuthService,
        AuthGuard
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

关于Angular 5 组件不属于任何 NgModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794423/

相关文章:

java - 无法向springboot发送http post请求

mysql - 使用带有 angular-cli 的 Sequelize 时找不到模块错误

javascript - 当我删除 map 中的对象时出现问题。我需要调用该函数 3 次

angular - 反转 Angular 2 *ngFor

javascript - ionic Angular : Triggering checkbox from card click

Angular 2不使用JWT身份验证发送授权 header

java - CORS 阻止了 Angular 7 和 Spring 5

响应式(Reactive)形式的 Angular matDatepicker

angular - 如何使用选择EventEmitter Angular 2 TabstripComponent

javascript - 如何禁用图表 ChartJS 中的点击