Ionic 4和Angular 7/8 CLI命令生成具有特定模块的组件

时间:2019-10-16 21:44:55

标签: angular-cli

我有一个Ionic4 / Angular 7/8应用程序。我想创建一个组件,并使用Angular CLI 7.3.9和8.1.3在特定模块中对其进行自动配置,但始终收到错误“文件...不存在”。

本文中的任何答案均无效。 Create component to specific module with Angular-CLI

重现此问题的步骤:

  1. 创建模块:ng g module pets

这在[my_project_dir] / src / app / pets目录中创建了一个名为pets.module.ts的文件。

  1. 使用CLI 7.3.9或8.1.3生成组件并添加到指定的模块
ng g component pets/cat --module=pets.module.ts
ng g component pets/cat --module=pets/pets.module.ts

从我的项目目录或[my_project_dir] / src / app目录执行上述命令会触发此错误消息文件pets / pets.module.ts不存在。

在7.3.9中发出此命令ng g component pets/cat -m pets.module.ts创建了组件cat,但pets.module.ts或app.module.ts均未更新。

在8.1.3中发出命令ng g component pets/cat -m pets.module.ts导致此错误消息:未知选项:'-m'

作为一种解决方法,我可以手动更新module.ts文件,但想知道解决方案以供将来参考。任何帮助表示赞赏。谢谢。

更新时间为10/16/2019 6:30 pm

如果使用ng new app-name命令创建了Angular应用程序,则可以使用,但是如果通过ionic start app-name blank --type=angular命令生成了Angular应用程序,则可以使用,尽管项目结构在两者之间非常相似这两个应用。

4 个答案:

答案 0 :(得分:0)

ng new petstore --skip-install
cd petstore
ng g module pets
ng g component pets/cat -m pets
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CatComponent } from './cat/cat.component';



@NgModule({
  declarations: [CatComponent], // <- note this
  imports: [
    CommonModule
  ]
})
export class PetsModule { }

ng version

Angular CLI: 8.3.10
Node: 10.15.3
OS: linux x64
Angular: 8.2.11

由于没有安装ng-cli v8.1.3,因此无法复制。 “为我工作”。 尝试发出与我完全相同的命令。也就是仅命名模块pets而不是pets.module.ts或其他

tree src/app 
src/app
├── app.component.css
├── app.component.html
├── app.component.spec.ts
├── app.component.ts
├── app.module.ts
└── pets
    ├── cat
    │   ├── cat.component.css
    │   ├── cat.component.html
    │   ├── cat.component.spec.ts
    │   └── cat.component.ts
    └── pets.module.ts

2 directories, 10 files

答案 1 :(得分:0)

如果您已经创建了模块,则无需指定模块。

ng g m pets

这应该生成一个名为pets的文件夹,其中包含一个名为pets.module.ts的文件

然后在运行时

ng g c pets/cat

它应该在pets / cat文件夹内生成cat.component.ts。

我建议将您的结构进行一些更改,例如:

app/
  modules/
    pets/
      components/
        cat/
          cat.component.[ts, html, scss, spec.ts]
      pets.module.ts
      pets.component.[ts, html, scss, spec.ts]
app.component.ts
app.component.html
app.module.ts

您可以这样做:先ng g m modules/pets,然后ng g c modules/pets/components,或使用--module(-m)标志

希望有帮助

答案 2 :(得分:0)

我也有同样的问题,我使用下面的命令修复了它。

ng g component pets/cat --module=/src/app/pets/pets.module.ts --export=true

ionic g component pets/cat --module=/src/app/pets/pets.module.ts --export=true

答案 3 :(得分:0)

Nirmal的答案应该是公认的,用最新的ionic 5 + angular 10确认

<块引用>

我也有同样的问题,我用下面的命令修复了它。

ng g component pets/cat --module=/src/app/pets/pets.module.ts --export=true
<块引用>

ionic g component pets/cat --module=/src/app/pets/pets.module.ts --export=true