Почему angular-cli не создает команду для 'модели' в angular project?

Изучая Angular, я просто прошел через различные команды Angular-CLI для создания отдельных частей Angular, таких как «Компонент», «Службы», «Интерфейс», «Каналы» и т. д.

Создание элементов Angular через Angular-CLI

ng g c components/comp-1 //generates component
ng g s services/service-1 // generates service
ng g i interfaces/interface-1 // generates interface

Но меня удивляет, почему нет команды генерации для «Модель» (хотя интерфейс также выполняет почти некоторую работу, но модель более мощная, поскольку может содержать методы также в классе).

Я что-то упустил или Team-Angular пропустил создание команды для «автоматического создания моделей», поскольку они лежат в основе OOPS Framework.

enter image description here

Ссылка:

https://www.npmjs.com/package/angular-cli

63
0
84 583
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Поскольку модель является - это класс, для его создания используйте параметр --type, например:

ng generate class hero --type=model

приведет к:

hero.model.ts

Но тогда интерфейс, каналы, модули также являются классами. Не так ли?

Deadpool 26.10.2018 09:58

Вы правы, формально они правы. Но модель ближе всего к универсальному классу, поскольку является скелетом данных (но на самом деле это не оправдание). Я также удивлен, что они не просто добавили команду model, хотя это не зарезервированное слово или что-то в этом роде.

Outman 26.10.2018 10:08

Если вам нужно избежать создания класса модульного теста hero.model.spec.ts, просто введите --spec = false. Например, ng generate class hero --type = model --spec = false

Ishwor Khanal 24.02.2019 01:49

К вашему сведению, это не работает с сокращенной версией: ng g c hero --type=model. Вы должны все напечатать, как в ответе.

Patrick 15.05.2020 04:32

@Patrick Вам нужно только ввести слово «класс». Итак, в вашем примере введите: ng g class hero --type=model, и вы получите свой hero.model.ts и связанный с ним файл .spec.

djmarquette 24.06.2020 23:55

Спасибо. Странно, что g может быть сокращен, но не c.

Patrick 25.06.2020 20:29

@Patrick, потому что сокращение c означает components - service). Я часто использую команду ng generate interface hero --type=model или ng generate i hero --type=model, потому что вместо этого она создает интерфейс (и не создает файл спецификации / теста).

BoDeX 03.03.2021 04:39

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

  1. appShell
  2. заявление
  3. класс
  4. составная часть
  5. директива
  6. перечислить
  7. сторожить
  8. интерфейс
  9. библиотека
  10. модуль
  11. трубка
  12. услуга
  13. serviceWorker
  14. универсальный
  15. webWorker

Итак, в вашем случае вы можете использовать опцию --type для определения генерируемых классов. Предположим, вам нужен класс вроде bar.foo.ts

Вам просто нужно определить это с помощью следующей опции.

ng generate class bar --type=foo

в вашем случае вы можете определить модуль с помощью этой команды

ng generate class nameOfYourModule --type=model

Он сгенерирует nameOfYourModule.model.ts

Пожалуйста, обратитесь к этому официальному документация опций ng generate для получения дополнительной информации.

Эта команда также генерирует модель

ng generate class employee --type

Результат в:

employee.tsemployee.spec.ts

Я просто использую ng generate class (без каких-либо флагов), и я думаю, что многие другие тоже. Я думаю, что единственный раз, когда я использую чистый файл класса в Angular, - это модели. Поскольку они в основном находятся в папке моделей, нет особых причин для добавления дополнительного суффикса «модель» с помощью --type=model. Я считаю, что это одна из причин, по которым команда Angular не включила команду ng generate model (поскольку она дублирует класс).

Просто запустите в корне проекта:

ng generate interface your_model_name --type=model
# or in models folder
ng generate interface models/your_model_name --type=model

Другие вопросы по теме