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

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

我使用的是angular cli版本:1.4.1


当前回答

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

其他回答

在我的例子中,ng似乎没有注册到我的环境路径中。我一直使用npm run命令来运行ng命令。注意,为了传递参数,你需要一个额外的参数——根据npm运行规范。

例子:

npm run ng g c components/scheduling **--** --module=app

Or:

npm run ng g c components/scheduling **--** --skip-import

当我试图在一个文件夹下创建一个新组件时,我正在得到下面的错误。

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

我已经使用下面的命令和新组件成功创建在一个文件夹下。

 ng g c folderName/my_newComponent ---module ../app

你必须在.module扩展名之前只提到模块的起始名

例如,如果模块名是user-account.module.ts 然后在命令中提供喜欢

ng g c newComponent --module=user-account

当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

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

ng generate component New-Component-Name

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

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