38

我有以下目录结构

在此处输入图像描述

我想创建一个新页面,比如说一个关于页面。我想把它放在 src/app/page/about/*

所以我尝试:

ng generate component pages/about

但我收到此错误:

Error: More than one module matches. Use skip-import option to skip importing the component into the closest module.
More than one module matches. Use skip-import option to skip importing the component into the closest module.

使用页面来存储我的单独页面是个好主意吗?如何使用 angular-cli 在子目录中生成组件?

4

4 回答 4

67

因为有 2 个模块 ( app.module.ts, shared.module.ts) 发现 CLI 不知道在哪个模块中声明您的组件。要解决这个问题,您必须使用module选项告诉 CLI 您希望在哪个模块中声明您的组件

ng generate component pages/about --module=app.module
// or
ng generate component pages/about --module=shared.module
于 2018-01-05T02:26:14.060 回答
8

要创建一个组件作为任何新模块的一部分,您还可以执行以下操作:

cd newModule to change directory into the newModule folder

ng g c newComponent to create a component as a child of the module.

这对我有用。我收到与您收到的相同的错误。

于 2018-12-19T18:20:26.943 回答
2

一般来说,需要在特定路径中生成组件或不超过一个父模块,如上述情况。

$> ng g component path/component-name  
  <enter> 

如果它是 Angular 应用程序,则不需要 src/app/path/component-name ->path。如果你提到 src/app,那么就会出现这个错误。

"Error: More than one module matches. Use skip-import "
于 2018-01-22T06:56:31.157 回答
1

您有两个模块,但尚未指定要将新组件添加到哪个模块。

如果你想将它添加到你的app模块中,你可以简单地使用:

ng generate component pages/about --module=app

同样要将其添加到您的shared模块中,您可以使用:

ng generate component pages/about --module=shared

使用速记,这些命令可以缩短为:

ng g c pages/about --module=app
ng g c pages/about --module=shared

你的文件结构看起来也很糟糕。我建议将目录中的所有文件上移pages一步到app目录中。

于 2020-07-27T23:31:15.637 回答