Answers:
使用--module参数指定模块。例如,如果主模块是app.module.ts,请运行以下命令:
ng g c new-component --module app
或者,如果您在其他目录中,则
ng g c component-name --module ../
试试这个:它对我有用
ng generate component componentName --module=app.module
这是由于一代人试图将您的组件添加到模块(即添加此行)引起的
import { MyComponent } from './Components/my-component/my-component.component';
但它发现了2个模块。
如前所述这里,他们是固定的情况下,只要在根的src / app文件夹,你只有1个模块,你很好,所以才动次级模块的子文件夹。
否则你必须使用 --module
modules
子文件夹,现在一切都很好。
它为我工作
ng g component component-name --skip-import
只是对Zisha的答案进行了小幅更新。
在我的项目中,所有模块都放在一个名为“模块”的文件夹中,所有组件都放在“ src / app”下的“ components”文件夹中
因此,为了在特定路径下创建组件,我使用了以下语法:
ng gc components_path / component_name-模块modules_path / module_name
例如:
ng gc components / login --module modules / app
Angular CLI:6.0.8
节点:10.4.0
OS:linux x64
Angular:6.0.4
如果存在一个功能模块(例如,在“ / manager”子文件夹中的manager.module.ts),并且路由模块被外部化到单独的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
要么
ng generate component some-name --skip-import
如果您希望手动添加组件的导入
-
做的伎俩!我有lib-name.routing.module.ts
代替lib-name-routing.module.ts
。
当应用程序或库具有多个嵌套模块时
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
我的项目是使用Visual Studio Community 2017创建的,它创建了3个独立的模块:app.browser.module,app.server.module和app.shared.module
为了创建我的组件,我检查了以上答案,发现我的模块为app.shared.module。
因此,我运行:
ng g c componentName --module=app.shared.module
Angular CLI:8.3.1
当module.ts
模块中有多个文件时,需要指定要为哪个模块文件生成组件。
ng g c modulefolder/componentname --module=modulename.module
对于例如我已经共享模块文件夹内的我所shared.module.ts
和material.module.ts
这样
shared
> shared.module.ts
> material.module.ts
我想生成sidebar
组件,shared.module.ts
然后我将运行以下命令
ng g c shared/sidebar --module=shared.module
如果要导出组件,请运行以下命令
ng g c shared/sidebar --module=shared.module --export
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
就我而言,似乎ng未注册到我的环境路径中。我一直在使用npm run命令来运行ng命令。请注意,要传递参数,您需要额外的内容-根据npm run规范。
示例:npm运行ng gc组件/计划--- module = app
或者:npm run ng gc components / scheduling --- skip-import
我在angular.json
配置中有此警告:
"prefix": "app_ng"
更改为"app"
全部时,效果很好。
只是为了给像我这样的任何人(其中只有一个应用程序)添加另一条信息。
我使用主app.module.ts设置了应用程序,并且使用主应用程序下自己文件夹中的路由模块进行了路由。我经历了一些“清理工作”,因为我还有其他一些事情需要更好地组织。我做的一件事是将routing.module.ts移到根文件夹;因为它是文件夹中的唯一文件,所以我认为它不需要它自己的文件夹。
最初,此方法运行良好,但下一次我尝试生成一个新组件(一段时间后,通过WebStorm IDE)时,此消息失败。阅读完此内容后,我尝试将路由模块放回一个单独的文件夹中,然后又重新工作了。
因此,请注意警告他人,请勿将路由模块移到您的根文件夹中!我敢肯定,还有其他方法可以处理此问题,但是我现在对它在自己的文件夹中并像以前一样使用IDE生成器感到满意。
作为一个hack,下面的步骤对我有用。
1)将* .module.ts文件从src / app移动到项目之外的位置。
2)执行命令以创建组件 [ng g c component-name]
3)将* .module.ts文件移回src / app /
ng g c admin/manageUsers ---module ../app