当我尝试在angular cli中创建一个组件时,它显示了这个错误。我怎样才能摆脱它呢?

错误:多个模块匹配。使用skip-import选项可以跳过将组件导入到最近的模块。

我使用的是angular cli版本:1.4.1


当前回答

Angular CLI: 6.0.8 节点:10.4.0 操作系统:linux x64 角:6.0.4

如果有一个特性模块(例如manager.module.ts)在。"/manager"子文件夹),而路由模块被外部化到单独的NgModule中(例如manager-routing.module.ts),错误消息如下:

超过一个模块匹配。使用skip-import选项可以跳过将组件导入到最近的模块。

不会出现,并且组件已正确生成并添加到manager.module.ts模块。

但是要注意命名惯例!路由模块的名称必须以“-routing”结束!

如果给路由模块一个这样的名字,例如manager-router.module。ts时,CLI会报错,并希望你提供——module选项来自动添加组件导入:

ng generate component some-name --module=manager.module.ts

or

ng generate component some-name --skip-import

如果您希望手动添加组件的导入

其他回答

试试这个:它对我很有效

生成组件componentName——module=app.module

这是由于生成试图将您的组件添加到模块,即添加这一行

import { MyComponent } from './Components/my-component/my-component.component';

但它找到了两个模块。

正如这里所述,他们修复了一种情况,只要在根src/app文件夹中只有一个模块,就可以了,所以只需将辅助模块移动到子文件夹中。

否则你必须使用——module

你必须像这样指定模块名

ng g c your-component --module module-name

module-name应该是你想用新创建的组件更新的模块名。

Angular CLI: 8.3.1

当你有多个模块时。Ts文件,您需要指定为哪个模块文件生成组件。

ng g c modulefolder/componentname --module=modulename.module

例如,我有一个共享模块文件夹,里面有共享的.module.ts和material.module.ts,就像这样

shared
  > shared.module.ts
  > material.module.ts

我想为shared.module.ts生成侧边栏组件 然后我将运行以下命令

ng g c shared/sidebar --module=shared.module

如果要导出组件,则运行以下命令

ng g c shared/sidebar --module=shared.module --export

我的项目是使用Visual Studio Community 2017创建的,它创建了3个独立的模块:app.browser。Module, app.server.module和app.shared.module

为了创建我的组件,我检查了上面的答案,发现我的模块是app.share .module。

所以,我跑:

ng g c componentName --module=app.shared.module