Команда CLI Ionic 4 и Angular 7/8 для создания компонента с определенным модулем - PullRequest
1 голос
/ 17 октября 2019

У меня есть приложение Ionic4 / Angular 7/8. Я хочу создать компонент и автоматически настроить его в определенном модуле, используя Angular CLI 7.3.9 и 8.1.3, но получаю сообщение об ошибке «Файл ... не существует».

Ни один изответы в этом посте тоже работают. Создание компонента для определенного модуля с помощью Angular-CLI

Действия для воспроизведения проблемы:

  1. Создание модуля: ng g module pets

При этом был создан файл с именем pets.module.ts в каталоге [my_project_dir] / src / app / pets.

Создание компонента и добавление в указанный модуль с помощью 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 не существует.

При вводе этой команды ng g component pets/cat -m pets.module.ts в 7.3.9 был создан компонент cat, но нет домашних животных. module.ts или app.module.ts были обновлены.

При вводе команды ng g component pets/cat -m pets.module.ts в 8.1.3 появилось это сообщение об ошибке: Неизвестная опция: '-m'

В качестве обходного пути я мог бы вручную обновить файл module.ts, но хотел бы узнать решение для дальнейшего использования. Любая помощь приветствуется. Спасибо.

Обновлено 16.10.2009 18:30

Работает, если приложение Angular создается с помощью команды ng new app-name, но NOT , если приложение генерируется с помощью команды ionic start app-name blank --type=angular, хотя структура проекта между двумя приложениями очень похожа.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Вам не нужно указывать модуль, если вы уже создали модуль.

ng g m pets

это должно создать папку с именем pets с файлом pets.module.ts

затемкогда вы запускаете

ng g c pets/cat

Он должен генерировать cat.component.ts в папке pets / cat.

Я бы порекомендовал немного изменить вашу структуру на что-то вроде:

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)

Надеюсь, это поможет

0 голосов
/ 17 октября 2019
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
...