我正在将我的 Angular 2 项目从 RC5 升级到 2.0.0。 我收到这样的错误信息
未处理的 Promise 拒绝:组件 LoginComponent is 不是任何 NgModule 的一部分,或者该模块尚未导入到你的 区域:
; 任务:Promise.then ; Value:Error:组件
Main.ts:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
AppModule:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import {RouterModule} from "@angular/router";
import {AppsAdminComponent} from './AppsAdmin/AppsAdmin.component';
import {AppsManagerComponent} from './AppsManager/AppsManager.component';
import {LoginComponent} from './Login/Login.component';
import {LogoutComponent} from './Logout/logout.component';
import { Routing } from './App.routing';
import {HttpModule} from '@angular/http';
//import {AppsManagerService} from './Service/AppsManager.service';
import {GlobalService} from './Service/GlobalService';
import {Webservice} from './Service/Webservice';
@NgModule({
declarations: [
AppComponent,
LoginComponent,
LogoutComponent,
AppsAdminComponent,
AppsManagerComponent
],
imports: [
BrowserModule,
HttpModule,
FormsModule,
Routing
],
providers: [
GlobalService,
Webservice
],
bootstrap: [
AppComponent
]
})
export class AppModule {
}
登录 @Component:
@Component({
selector: 'Login',
templateUrl: 'App/Login/Login.html',
providers: [LoginService],
styleUrls: ['App/Login/Login.css']
})
怎么了?
我从 RC5 升级到 Final 时也遇到了同样的问题,花了好长时间才找到答案。我终于找到了答案,因为我记得我收到了 "NgModule AppModule 通过 "LoginComponent" 使用了 LoginComponent,但它既没有声明也没有导入!当我最终查看该错误信息时,我找到了我的答案,它可能与你的答案类似。我在 here 找到了我的答案。
这篇文章告诉我,在我的 app.module.ts 文件中,我声明了如下组件:
app.module:
import { AccountComponent, AccountDetails } from './account/index'; import { LoginComponent, ResetPasswordComponent } from './login/index';
但在我的路由文件中是这样的:
import { AccountComponent, AccountDetails } from './Account/Index'; import { LoginComponent, ResetPasswordComponent } from './Login/Index';
因此,由于大写字母的不同,路由认为其加载的组件与模块不同,这意味着被拉入路由的组件与模块不同。
希望对您有所帮助。
我也遇到了同样的错误。我有很多组件,在 app.module.ts中漏掉了一些,但我不确定是哪些。
我在.App.module.ts**中添加了一条日志语句,发现了问题所在。
/node_modules/@angular/compiler/bundles/compiler.umd.js
// I ADDED THIS LOG STATEMENT
console.log('compType', String(compType));
// THIS LINE EXISTS ALREADY
throw new Error("Component " + stringify(compType) + " is not part of any NgModule or the module has not been imported into your module.");
日志语句会显示你忘记将哪个组件添加到 app.module.ts 中,只需点击浏览器控制台选项卡中的日志语句输出即可了解详情。
完成后删除日志语句。
注意:确保在 SystemJS 配置文件中使用的是 compiler.umd.js(而非 compiler.umd.min.js)。