使用Angular 4时ngModule的问题

时间:2017-04-04 14:57:44

标签: angular

我有一个使用webpack配置的Angular(2)应用程序,它从另一个公共存储库导入模块。

因此,公共存储库有一个common.module.ts文件,其内容如下:

@NgModule({
  imports: [...],
  declarations: [...],
  providers: [...],
  exports: [...]
})
export class CommonModule {}

然后在我的主应用程序中我将我的app.module.ts

导入
@NgModule({
  imports: [
    ...
    CommonModule,
  ],
  declarations: [...],
  providers: [...],
  bootstrap: [AppComponent]
})
export class AppModule { }

这在Angular2中工作正常,但后来我尝试在我的主项目中迁移到Angular 4.0(没有触及公共存储库,因为它也被其他未迁移的存储库使用)。 所以我在package.json中更改了我的版本并重建,一切似乎都很好,但是当我在浏览器中加载应用程序时,我得到了这个

  

未捕获错误:模块“AppModule”导入的意外值“CommonModule”。请添加@NgModule注释。

有人知道发生了什么事吗?已经使用@NgModule声明了CommonModule。 我检查了node_modules以防导入的文件出现问题,并找到包含

的common_module.d.ts
...
export declare class CommonModule {}

但对我来说很好,这是桶文件,装饰器已经从这里删除。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好的,我终于在Angular github获得了帮助以使其正常运行。

所以,我必须做的是改变我的公共项目中的依赖项,以使用任何角度库> = 2.0.0,就像这样

"dependencies": {
"@angular/core": ">=2.0.0",
"@angular/common": ">=2.0.0",
"@angular/router": ">=3.0.0",
"@angular/http": ">=2.0.0",
"@angular/platform-browser": ">=2.0.0",

我运行yarn来更新依赖项,然后将更改推送到我的github仓库。

进入我的应用项目后,我升级了我的公共库运行 yarn upgrade my_github_repo/common#feature/angular4 (feature / angular4是我推送更改的公共项目中分支的名称)

就是这样,这样我的项目中只有一个角度库,4.0.0,这是我的应用程序使用的角色库。

我用另一个使用Angular 2.0.0的应用程序测试了它,它也使用了公共库,在这种情况下,我的node_modules中的angular版本是2.0.0,所以一切都很好。