我开始使用angular-cli,我已经阅读了很多内容,以便找到关于我想做什么的答案......没有成功,所以我来到这里。
有没有办法为新模块创建组件?
例如:ng g module newModule
ng g component newComponent
(如何将此组件添加到newModule?)
因为angular-cli默认行为是将所有新组件放在app.module
内。我想选择我的组件的位置,这样我就可以创建单独的模块,并且不会在app.module
中包含所有组件。使用angular-cli可以做到这一点,还是我必须手动执行此操作?
答案 0 :(得分:141)
要创建组件作为模块的一部分,您应该
ng g module newModule
生成模块,cd newModule
将目录更改为newModule
文件夹ng g component newComponent
创建组件作为模块的子项。答案 1 :(得分:78)
ng g component nameComponent --module=app.module.ts
答案 2 :(得分:60)
在撰写本文时,不确定Alexander Ciesielski的回答是否正确,但我可以证实这不再有效。运行Angular CLI的项目中的哪个目录并不重要。如果您输入
ng g component newComponent
它将生成一个组件并将其导入app.module.ts文件
使用CLI将其自动导入另一个模块的唯一方法是指定
ng g component moduleName/newComponent
其中moduleName是您已在项目中定义的模块。如果moduleName不存在,它会将组件放在moduleName / newComponent目录中,但仍将其导入app.module
答案 3 :(得分:23)
我没有找到答案,显示如何使用cli在顶级模块文件夹中生成组件,并且还让组件自动添加模块的声明集合。
要创建模块,请运行:
ng g module foo
要在foo模块文件夹中创建组件并将其添加到foo.module.ts的声明集合中,请运行以下命令:
ng g component foo/fooList --module=foo.module.ts
cli会像这样搭建模块和组件:
- 编辑新版本的角度cli表现不同。 1.5.5不需要模块文件名,所以v1.5.5的命令应该是
ng g component foo/fooList --module=foo
答案 4 :(得分:11)
您可以尝试以下命令,该命令描述了
ng -> Angular
g -> Generate
c -> Component
-m -> Module
然后您的命令将类似于:
ng g c user/userComponent -m user.module
答案 5 :(得分:6)
这对我有用:
1 --> ng g module new-module
2 --> ng g c new-module/component-test --module=new-module/new-module.module.ts
如果要生成没有其目录的组件,请使用--flat
标志。
答案 6 :(得分:5)
对于Angular v4及以上版本,只需使用:
ng g c componentName -m ModuleName
答案 7 :(得分:5)
首先生成模块:
ng g m moduleName --routing
这将创建一个moduleName文件夹,然后导航到模块文件夹
cd moduleName
然后生成组件:
ng g c componentName --module=moduleName.module.ts --flat
使用--flat不能在模块文件夹内创建子文件夹
答案 8 :(得分:4)
TL;DR
试试这个。通过模块的文件名指定模块名称(不包括.ts扩展名)
ng g c components/path-to-a-folder/component-name --module=app.module
注意事项:
ng g c
是 ng generate component
collection.module.ts
然后使用 --module=collection.module
而不是 --module=app.module
& 你应该很高兴去。答案 9 :(得分:3)
常见的模式是使用路由,延迟加载的模块和组件来创建要素。
路线:myapp.com/feature
app-routing.module.ts
{ path: 'feature', loadChildren: () => import('./my-feature/my-feature.module').then(m => m.MyFeatureModule) },
文件结构:
app
└───my-feature
│ │ my-feature-routing.module.ts
│ │ my-feature.component.html
│ │ my-feature.component.css
│ │ my-feature.component.spec.ts
│ │ my-feature.component.ts
│ │ my-feature.module.ts
这一切都可以在cli中完成:
ng generate module my-feature --module app.module --route feature
或更短
ng g m my-feature --module app.module --route feature
或者如果省略名称,cli将提示您输入名称。当您需要创建多个功能时非常有用
ng g m --module app.module --route feature
答案 10 :(得分:3)
ng g c componentName --module=path-to-your-module-from-src-folder
示例:
ng g c testComponent --module=/src/app/home/test-component/test-component.module
答案 11 :(得分:1)
我在 Angular CLI 8.3 版中使用了以下命令,它通过生成在特定模块中声明的特定组件来工作。
移动到我们需要生成组件的特定文件夹
cd <component-path>
调用下面的生成命令
ng g c <component-name> --module=<module-name>
`ng g c login --module= app`
答案 12 :(得分:1)
我今天在搭建Angular 9应用程序时遇到了这个问题。每当在模块名称中添加.module.ts
或.module
时,都会出现“模块不存在错误”。 cli只需要模块名称,没有扩展名。假设我有一个模块名称:brands.module.ts
,那么我使用的命令是
ng g c path/to/my/components/brands-component -m brands --dry-run
在确认文件结构正确后,删除--dry-run
。
答案 13 :(得分:1)
转到模块级别,然后输入以下命令
ng g component "path to your component"/NEW_COMPONENT_NAME -m "MODULE_NAME"
示例:
ng g component common/signup/payment-processing/OnlinePayment -m pre-login.module.ts
答案 14 :(得分:1)
ng g m modules/media
这将在media
文件夹中生成一个名为modules
的模块。
ng g c modules/media/picPick --module=modules/media/media.module.ts
命令ng g c modules/media/picPick
的第一部分将在picPick
文件夹中生成一个名为modules/media
的组件文件夹,其中包含我们新的media
模块。
第二部分将通过将其导入模块文件中并将其附加到此模块的picPick
数组中,来在media
模块中声明我们新的declarations
组件。
答案 15 :(得分:1)
我创建了具有特定根文件夹的基于组件的子模块
我在下面指定的cli命令,请检出
ng g c Repair/RepairHome -m Repair/repair.module
修复是我们子模块的根文件夹
-m是--module
c用于组合
g用于生成
答案 16 :(得分:1)
根据Angular文档,为特定模块创建组件的方法是
ng g component <directory name>/<component name>
“目录名称” = CLI生成功能模块的位置
示例:-
ng generate component customer-dashboard/CustomerDashboard
这将在customer-dashboard文件夹中为新组件生成一个文件夹,并使用CustomerDashboardboardComponent更新功能模块
答案 17 :(得分:1)
使用这个简单的命令:
ng g c users/userlist
users
:您的模块名称。
userlist
:您的组件名称。
答案 18 :(得分:1)
我在应用程序中遇到了多个模块的类似问题。可以为任何模块创建组件,因此在创建组件之前,我们必须指定特定模块的名称。
'ng generate component newCompName --module= specify name of module'
答案 19 :(得分:0)
我使用此特定命令在模块内部生成组件。
ng g c <module-directory-name>/<component-name>
此命令将生成模块本地的组件。 或您可以先输入以下内容来更改目录。
cd <module-directory-name>
然后创建组件。
ng g c <component-name>
注意:<>中包含的代码表示用户特定的名称。
答案 20 :(得分:0)
首次运行ng g module newModule
。然后运行ng g component newModule/newModule --flat
答案 21 :(得分:0)
1.-照常创建功能模块。
ng generate module dirlevel1/module-name
2.--您可以在-module (仅在--module,(/)中)指定项目的 ROOT PATH 根指向您的项目根,并且不是系统根!! )
ng generate component dirlevel1/component-name --module /src/app/dirlevel1/module-name.module.ts
真实示例:
ng generate module stripe/payment-methods-list
ng generate component stripe/payment-methods-list --module=/src/app/stripe/payment-methods-list/payment-methods-list.module.ts
输出:
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.scss (0 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.html (39 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.spec.ts (768 bytes)
CREATE src/app/stripe/payment-methods-list/payment-methods-list.component.ts (322 bytes)
UPDATE src/app/stripe/payment-methods-list/payment-methods-list.module.ts (311 bytes)
[OK] Generated component!
使用Angular CLI测试:9.1.4
答案 22 :(得分:0)
如果您在.angular-cli.json中声明了多个应用(例如,在处理功能模块时)
"apps": [{
"name": "app-name",
"root": "lib",
"appRoot": ""
}, {...} ]
你可以:
ng g c my-comp -a app-name
-a代表--app(名称)
答案 23 :(得分:0)
Basic:
ng g module chat
ng g service chat/chat -m chat
ng g component chat/chat-dialog -m chat
In chat.module.ts:
exports: [ChatDialogComponent],
providers: [ChatService]
In app.module.ts:
imports: [
BrowserModule,
ChatModule
]
Now in app.component.html:
<chat-dialog></chat-dialog>
LAZY LOADING:
ng g module pages --module app.module --route pages
CREATE src/app/pages/pages-routing.module.ts (340 bytes)
CREATE src/app/pages/pages.module.ts (342 bytes)
CREATE src/app/pages/pages.component.css (0 bytes)
CREATE src/app/pages/pages.component.html (20 bytes)
CREATE src/app/pages/pages.component.spec.ts (621 bytes)
CREATE src/app/pages/pages.component.ts (271 bytes)
UPDATE src/app/app-routing.module.ts (8611 bytes)
ng g module pages/forms --module pages/pages.module --route forms
CREATE src/app/forms/forms-routing.module.ts (340 bytes)
CREATE src/app/forms/forms.module.ts (342 bytes)
CREATE src/app/forms/forms.component.css (0 bytes)
CREATE src/app/forms/forms.component.html (20 bytes)
CREATE src/app/forms/forms.component.spec.ts (621 bytes)
CREATE src/app/forms/forms.component.ts (271 bytes)
UPDATE src/app/pages/pages-routing.module.ts (437 bytes)
答案 24 :(得分:0)
如果您想与模块一起创建,请尝试
ng generate m module_name --routing && ng generate c component_name
答案 25 :(得分:0)
阅读--route
https://angular.io/cli/generate#module-command的描述,
要进行存档,必须将该 component-module 的路由添加到某处并指定路由名称。
ng generate module component-name --module=any-parent-module --route=route-path
答案 26 :(得分:0)
Module
来生成ng generate module <module name>
。ng generate component <component name> --module=<module name>
答案 27 :(得分:0)
我不知道这是否是将你们带到这里的原因,但我想创建一个包含模块、路由和组件文件的文件夹。我希望将组件声明到我创建的模块中。
为此,我发现这个命令非常有用。
ng g m path/to/folder/component --routing && ng g c path/to/folder/component
这应该会创建一个包含 6 个文件的文件夹。
CREATE path/to/folder/component/component-routing.module.ts (253 bytes)
CREATE path/to/folder/component/component.module.ts (297 bytes)
CREATE path/to/folder/component/component.component.html (26 bytes)
CREATE path/to/folder/component/component.component.spec.ts (655 bytes)
CREATE path/to/folder/component/component.component.ts (295 bytes)
CREATE path/to/folder/component/component.component.scss (0 bytes)
UPDATE path/to/folder/component/component.module.ts (379 bytes)
如果您不想要路由,可以删除 --routing。
答案 28 :(得分:0)
使用Angular CLI将组件添加到Angular 4应用程序
要向应用添加新的Angular 4组件,请使用命令ng g component componentName
。执行此命令后,Angular CLI在component-name
下添加了一个文件夹src\app
。此外,相同的引用会自动添加到src\app\app.module.ts
文件中。
组件应具有@Component
装饰器功能,后跟class
,需要export
。 @Component
装饰器函数接受元数据。
使用Angular CLI将组件添加到Angular 4应用程序的特定文件夹
要将新组件添加到特定文件夹,请使用命令ng g component folderName/componentName