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

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

我使用的是angular cli版本:1.4.1


当前回答

当app或lib有多个嵌套模块时

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
          login.module.ts

角CLI

ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts 

NRWL NX Angular CLI

ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts

结果

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
            > my-auth
              my-auth.component.ts etc...
          login.module.ts

其他回答

Angular CLI: 8.3.4 节点:10.16.3 Angualr: 4.2.5

我使用“dotnet new angular”命令来生成项目,它已经在app文件夹中生成了3个不同的模块(尽管一个简单的ng new project-name测试只生成了一个模块。

查看项目中的模块并决定需要哪个模块-然后指定名称

ng g c componentName --module=[name-of-your-module]

你可以在这里阅读更多关于模块的信息: https://angular.io/guide/architecture-modules

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

有两种方法可以解决这个问题。

1)跳过(在命令中使用——Skip -import)默认导入并创建组件,一旦组件创建完成,就可以手动将它导入到任何你想使用它的地方。

ng generate component my-component --skip-import

2)在你想导入模块的地方显式地提供模块名

ng generate  component  my-component --module=my-module.module

当有多个模块时,需要指定模块名

 ng g c componentName --module=modulename.module 

当app文件夹下有多个模块时,使用以下命令生成组件将失败:

ng generate component New-Component-Name

原因是angular CLI检测到多个模块,不知道该在哪个模块中添加组件。因此,您需要显式地提到将添加哪个模块组件:

ng generate component New-Component-Name --module=ModuleName