Я не могу добавить новый компонент с angular cli в asp.net core spas

Я хочу добавить новый компонент в asp.net core 2.0 SPA с angular 4 с angular cli с помощью этого версия:

@angular/cli: 1.4.2

node: 8.4.0

os: Linux x64

когда я запускаю эту команду ng g c vehicle-form в каталоге компонентов, получил эту ошибку:

Ошибка: не удалось найти NgModule для нового компонента. Используйте опцию skip-import, чтобы пропустить импорт компонентов в NgModule. Не удалось найти NgModule для нового компонента. Используйте опцию skip-import, чтобы пропустить импорт компонентов в NgModule.

app.module.shared.ts

Кроме того, у меня есть 3 файла для app.module.ts не один: \:

app.module.browser.ts

app.module.shared.ts

app.module.server.ts

Ответ 1

Вы используете Angular CLI в проекте, который не был построен с CLI, поэтому вам нужно сделать несколько дополнительных шагов. Сообщение об ошибке говорит, что вы хотите сделать.

Сначала запустите команду ng gc vehicle-form и --skip-import=true параметр --skip-import=true.

Затем добавьте объявление компонента в файл соответствующего модуля приложения вручную. В этом случае app.module.shared.ts, где app.module.shared.ts все остальные компоненты приложения.

Или вы можете запустить ng gc vehicle-form и включить --module='app.module.shared.ts'. Возможно, вам придется полностью определить путь к файлу модуля. Я не тестировал его, поэтому будьте готовы попробовать несколько вещей с этим по своему усмотрению.

Подробнее о ng генерировать компонент: сгенерировать компонент.

ОБНОВЛЕНИЕ (2018-03-01)

Microsoft выпустила несколько новых шаблонов SPA для использования с приложениями ASP.NET Core 2.0. Вы можете найти более подробную информацию о них здесь. Новый шаблон Angular включает поддержку Angular CLI. Итак, если вы знакомы с CLI, тогда это должно немного походить на дом. Это означает, что вы можете выполнять команды ng g для генерации кода с помощью этого нового шаблона.

Ответ 2

В моем случае проблема была в проекте e2e. После того, как я переместил проект с углового 4 на угловой 6, новый угловой конфигурационный файл был добавлен вместо "angular.json" вместо "angular.conf.json". В разделе проектов появился два проекта: один из них - мое "ng-app" и другое "ng-app-e2e". Когда я пытаюсь выполнить команду "ng gc", я поймаю ту же ошибку. Причина была в корневом разделе "ng-app-e2e". У него было пустое значение. Я установил его в "e2e". Теперь все в порядке! Это происходит, несмотря на то, что проект по умолчанию установлен в "ng-app".

"projects": {
    "ng-app": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      ...
    },
    "ng-app-e2e": {
      "root": "e2e", <-- SALVATION
      "sourceRoot": "e2e",
      "projectType": "application",
      ...
    }
  },
  "defaultProject": "ng-app"  

Ответ 3

В случае проекта ASP Net Core Angular приложение .module разбивается на 3 файла по мере того, как вы выделили. CLI Angular должен решить, где добавить ссылку на компонент в модуле, поэтому вам необходимо предоставить его с некоторой помощью.

ng g c moduleName --module = 'app.module.browser.ts'

Ответ 4

в .angular-cli.json в части "приложения" заменить "./src" на "src"

"apps": [     {        "root": "src",        "outDir": "dist",

Ответ 5

ng сгенерировать компонент componentName --module = app.module

В моем проекте также я получил вышеуказанную ошибку, я пробовал эту команду, это работает правильно. Я думаю, это поможет вам.

Ответ 6

Я столкнулся с той же проблемой, а затем понял, что я не в корневой папке проекта.

Я не работал, когда

/c/some/path/your_project/src/bla/bla/bla

Но он работает (для меня это сработало)

/c/some/path/your_project

Ответ 7

У меня была та же проблема при преобразовании версии 5 в 6. Я нашел решение от github. когда я удалил e2e из sourceRoot. Он решил проблему.

Ответ 8

Эта ошибка возникнет в случае, если файл app.module.ts отсутствует. Убедитесь, что файл присутствует, а если он не существует, создайте его вручную.