ChatGPT解决这个技术问题 Extra ChatGPT

使用 Angular-CLI 创建组件并将其添加到特定模块

我开始使用 angular-cli 并且我已经阅读了很多内容来找到关于我想做的事情的答案......没有成功,所以我来到了这里。

有没有办法为新模块创建组件?

例如:ng g module newModule

ng g component newComponent(如何将此组件添加到 newModule 中??)

因为 angular-cli 默认行为是将所有新组件放在 app.module 中。我想选择我的组件的位置,这样我就可以创建单独的模块并且不会将所有组件都放在 app.module 中。可以使用 angular-cli 来做到这一点,还是我必须手动做到这一点?


M
Mahee Gamage

要将组件创建为模块的一部分,您应该

ng g module newModule 生成一个模块, cd newModule 将目录更改为 newModule 文件夹 ng g component newComponent 创建一个组件作为模块的子级。

更新:角 9

现在,您在生成组件时所在的文件夹并不重要。

ng g module NewModule 生成一个模块。 ng g component new-module/new-component 创建 NewComponent。

注意:当 Angular CLI 看到 new-module/new-component 时,它会理解并翻译大小写以匹配 new-module -> NewModulenew-component -> NewComponent。一开始可能会让人感到困惑,因此简单的方法是将#2中的名称与模块和组件的文件夹名称相匹配。


您还可以保留在项目根目录中,并在组件前面加上模块名称 ng g component moduleName/componentName
使用 Angular CLI 1.6.8 版,当我对现有模块进行 sepcify 时,我总是收到错误提示“指定的模块不存在”。当我尝试以下命令时它起作用了:ng generate service service1 --module=module1/module1.module.ts。注意:我的服务名称是 service1,我的模块名称是 module1
这将在指定目录中创建一个新组件,但不会在模块中注册它。它将在 app.module 中注册它。您需要使用 --module 选项指定模块,例如:ng g component <your component> --module=<your module name>
截至 10 月 6 日已过时,Angular 6
过时了。 Angular 6 不依赖文件夹结构来查看组件在哪个模块中。两个模块可以在同一个目录中。 @daniel 的回答 stackoverflow.com/a/44812014/511719 适用于 Angular 6。
J
JNYRanger
ng g component nameComponent --module=app.module.ts

其他答案有效,但这是最有效的。值得在末尾添加 --dry-run 只是为了看看会受到什么影响,这是一个很好的健全性检查
ng g component path/to/myComponent --module=app.module.ts --dry-run 是一个非常有用的命令;只是为了确保您的组件是在正确的目录中创建的。
可以在模块选项中使用相对路径,如下ng g component componentName --module=../../sibling/path/custom.module.ts --dry-run
ng g c newComponent --module app 也可以。我在终端中使用了它,而不是在与 app.module.ts 文件相同的目录中,并将它放在正确的模块中
D
Diskdrive

不确定 Alexander Ciesielski 的回答在撰写本文时是否正确,但我可以验证这不再有效。运行 Angular CLI 的项目中的哪个目录都没有关系。如果你输入

ng g component newComponent

它将生成一个组件并将其导入到 app.module.ts 文件中

您可以使用 CLI 自动将其导入另一个模块的唯一方法是指定

ng g component moduleName/newComponent

其中 moduleName 是您已经在项目中定义的模块。如果 moduleName 不存在,它会将组件放在 moduleName/newComponent 目录中,但仍将其导入 app.module


当时这对我来说是正确的答案..它工作正常。我创建了一个拉取请求以将此信息添加到文档中。其中一位贡献者要求我删除 cd-ing 部分..最后将是 1. ng g module newModule 2. ng g component new-module/newComponent 根据他应该是 new-module 而不是 newModule
需要指出的是,使用 Alexander Ciesielski 的技术并按预期工作。我应该注意,我不需要创建只需要创建文件夹的组件。所以我只是 mkdir 一个文件夹,然后在新创建的文件夹内运行 ng component newComponent。
我想说完整的答案是ng g component moduleName/newComponent -m moduleName
在我的情况下,组件名称与模块名称相同,因此我使用 ng generate module {modComName} 创建了模块 1)创建了文件夹 2)在同名文件夹中创建了一个模块文件;命令 ng generate component {modComName} 实际上 1)在同名文件夹中创建了一个组件文件 2)修改了模块以导入组件
如果您创建一个模块并将其导入基本模块,请小心; ng 将导入添加到数组的 end;但您可能想要:"The order of the routes in the configuration matters and this is by design."
c
cobolstinks

我没有找到显示如何使用 cli 在顶级模块文件夹中生成组件的答案,并且还让组件自动添加了模块的声明集合。

要创建模块,请运行:

ng g module foo

要在 foo 模块文件夹中创建组件并将其添加到 foo.module.ts 的声明集合中,请运行以下命令:

ng g component foo/fooList --module=foo.module.ts

cli 将像这样搭建模块和组件:

https://i.stack.imgur.com/VOO37.png

--EDIT 新版本的 angular cli 行为不同。 1.5.5 不需要模块文件名,所以 v1.5.5 的命令应该是

ng g component foo/fooList --module=foo

赞成 --module 论点; docs 说“允许声明模块的规范”。 ;我会添加 --module 指定应该修改现有模块以导入您将要创建的模块
@TheRedPea 我相信您的意思是“--module 指定应该修改哪个现有模块以导入您的组件......”
是的,你是对的!参考新组件修改现有模块
k
keepAlive

您可以尝试以下命令,该命令描述了,

ng -> Angular 
g  -> Generate
c  -> Component
-m -> Module 

然后您的命令将如下所示:

ng g c user/userComponent -m user.module

这适用于角度 12,在 .module 之后不需要 .ts,所以这是完美的。正如托尼所提到的,值得在末尾添加 --dry-run 只是为了看看会受到什么影响,这是一个很好的健全性检查
S
Stephen Rauch

对于 Angular v4 及更高版本,只需使用:

ng g c componentName -m ModuleName

在模块存在时引发错误 Specified module does not exist
您不指定模块的名称,而是指定模块的文件名。
像魅力一样工作!例如,如果您的模块文件是 user-settings.module.ts,并且您想添加一个组件 public-info,那么命令将是:ng g c PublicInfo -m user-settings
这是最简单,最干净的答案!
M
Mohamed Makkaoui

这对我有用:

1 -->  ng g module new-module

2 -->  ng g c new-module/component-test --module=new-module/new-module.module.ts

如果要生成没有目录的组件,请使用 --flat 标志。


不需要写.ts
--module=path-to-module 对我有用,谢谢@Mohamed Makkaoui
E
Elhakim

首先,您通过执行生成一个模块。

ng g m modules/media

这将在 modules 文件夹中生成一个名为 media 的模块。

其次,您生成一个添加到此模块的组件

ng g c modules/media/picPick --module=modules/media/media.module.ts

命令 ng g c modules/media/picPick 的第一部分将在 modules/media 文件夹内生成一个名为 picPick 的组件文件夹,其中包含我们的新 media 模块。

第二部分将通过在模块文件中导入新的 picPick 组件并将其附加到此模块的 declarations 数组中,从而在 media 模块中声明我们的新 picPick 组件。

https://i.stack.imgur.com/Xxpel.png

https://i.stack.imgur.com/zyxKK.png


你能解释一下这如何回答这个问题吗?
谢谢你的留言,我编辑了我的答案,因为我是未来的读者@CertainPerformance
V
Varun Jain

首先生成模块:

ng g m moduleName --routing

这将创建一个 moduleName 文件夹,然后导航到 module 文件夹

cd moduleName

然后生成组件:

ng g c componentName --module=moduleName.module.ts --flat

使用 --flat 不在模块文件夹内创建子文件夹


d
double-beep
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

J
Jared Whipple

一种常见的模式是使用路由、延迟加载的模块和组件来创建功能。

路线:myapp.com/feature

应用程序路由.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

P
Praveen G

我在 Angular CLI 8.3 版中使用了以下命令,它通过生成在特定模块中声明的特定组件来工作。

移动到我们需要生成组件的特定文件夹 cd 调用下面的生成命令 ng gc --module=

例子

 `ng g c login --module= app`

J
Junaid

TL;DR 试试这个。通过模块的文件名(不包括 .ts 扩展名)指定模块名称 ng gc components/path-to-a-folder/component-name --module=app.module

笔记:

ng gc 是 ng generate 组件的缩写

如果您希望将组件添加到不同的模块中,假设在文件 collection.module.ts 中,然后使用 --module=collection.module 而不是 --module=app.module & 你应该很高兴。


S
Shiva Nayak Dharavath

转到模块级别/我们也可以在根级别并键入以下命令

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

i
isaax2

1.- 像往常一样创建您的功能模块。

ng generate module dirlevel1/module-name

2.-您可以在--module中指定项目的ROOT PATH(仅在--module中,(/)根指向您的项目根而不是系统根!!!)

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


V
Vixson

阅读 --route https://angular.io/cli/generate#module-command 的描述,

要存档此类,您必须将该组件模块的路由添加到某处并指定路由名称。

   ng generate module component-name --module=any-parent-module --route=route-path

Z
Zabeeh Ullah Babar

我不知道这是否是把你们带到这里的原因,但我想创建一个包含模块、路由和组件文件的文件夹。我希望将组件声明为我创建的模块。

为此,我发现此命令非常有用。

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。


v
vivek

我在应用程序中遇到多个模块的类似问题。可以为任何模块创建组件,因此在创建组件之前,我们必须指定特定模块的名称。

'ng generate component newCompName --module= specify name of module'

H
Hasan Fathi

使用这个简单的命令:

ng g c users/userlist

users:您的模块名称。

userlist:您的组件名称。


S
Sam

如果您在 .angular-cli.json 中声明了多个应用程序(例如,如果使用功能模块)

"apps": [{
    "name": "app-name",
    "root": "lib",
    "appRoot": ""
}, {...} ]

你可以 :

ng g c my-comp -a app-name

-a 代表--app(名称)


S
Sksaif Uddin

根据 Angular 文档,为特定模块创建组件的方法是,

ng g component <directory name>/<component name>

“目录名称” = CLI 生成功能模块的位置

例子 :-

ng generate component customer-dashboard/CustomerDashboard

这会在 customer-dashboard 文件夹中为新组件生成一个文件夹,并使用 CustomerDashboardComponent 更新功能模块


T
Tuan van Duong

首先运行 ng g module newModule 。然后运行 ng g component newModule/newModule --flat


C
Community

我创建了具有特定根文件夹的基于组件的子模块

我指定了下面的那个cli命令,请检查

ng g c Repair/RepairHome -m Repair/repair.module

修复是我们子模块的根文件夹

-m 是 --module c 用于生成的组件 g


d
doubleya

我今天在构建 Angular 9 应用程序时遇到了这个问题。每当我将 .module.ts.module 添加到模块名称时,我都会收到“模块不存在错误”。 cli 只需要不带扩展名的模块名称。假设我有一个模块名称:brands.module.ts,我使用的命令是

ng g c path/to/my/components/brands-component -m brands --dry-run

确认文件结构正确后删除 --dry-run


C
Carlos Luis Rivero

在特定模块中制作模块、服务和组件

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)

k
karel

首先,您必须使用以下命令创建一个新模块:

ng g module newModule

然后,您必须使用以下命令进入该目录:

cd command  
cd newModule

而且,现在您可以使用以下命令继续:

ng g component newComponent

该组件将在该模块中创建。


x
xameeramir

使用 Angular CLI 将组件添加到 Angular 4 应用程序

要将新的 Angular 4 组件添加到应用程序,请使用命令 ng g component componentName。执行此命令后,Angular CLI 在 src\app 下添加一个文件夹 component-name。此外,相同的引用会自动添加到 src\app\app.module.ts 文件中。

组件应具有 @Component 装饰器函数,后跟需要 export 编辑的 class@Component 装饰器函数接受元数据。

使用 Angular CLI 将组件添加到 Angular 4 应用程序的特定文件夹

要将新组件添加到特定文件夹,请使用命令 ng g component folderName/componentName


S
Shashank Rawat

我使用这个特定的命令在模块内生成组件。

ng g c <module-directory-name>/<component-name>

此命令将生成模块本地的组件。或者您可以先通过键入来更改目录。

cd <module-directory-name>

然后创建组件。

ng g c <component-name>

注意:<> 中的代码代表用户特定的名称。


p
pwshehan

您可以使用 ng generate module 生成模块。然后使用此命令生成与该模块相关的组件, ng generate component --module=


T
Tee's Touch

如果您已经创建了没有指向模块的组件,您可以通过将其添加到声明中轻松地将其直接添加到您的应用程序模块

@NgModule({
    declarations: [

    FileManagerDetailsComponent <---this is ur page component