Ответы:
Укажите модуль, используя параметр --module. Например, если основным модулем является app.module.ts, запустите это:
ng g c new-component --module app
Или если вы находитесь в другом каталоге, то
ng g c component-name --module ../
Попробуйте это: это работает для меня
ng generate component componentName --module=app.module
Это вызвано тем, что поколение пыталось добавить ваш компонент в модуль, т.е. добавить эту строку
import { MyComponent } from './Components/my-component/my-component.component';
но он нашел 2 модуля.
Как указано здесь , они исправили это в ситуации, когда, пока в корневой папке src / app у вас есть только 1 модуль, у вас все в порядке, так что просто переместите дополнительные модули в подпапку.
В противном случае вы должны использовать --module
modules
подпапку, и теперь все хорошо.
Это работает на меня
ng g component component-name --skip-import
Просто небольшое обновление к ответу Зиши.
В моем проекте все модули были помещены в папку «модули», а все компоненты помещены в папку «компоненты» в «src / app»
поэтому для создания компонента по определенному пути я использовал следующий синтаксис:
ng gc component_path / component_name - модуль module_path / module_name
пример :
ng gc компоненты / логин - модули модулей / приложение
Угловой CLI: 6.0.8
Узел: 10.4.0
ОС: linux x64
Угловой: 6.0.4
Если в подпапке, например, «/ manager», например, имеется функциональный модуль (например, manager.module.ts ), модуль маршрутизации которого выведен в отдельный модуль NgModule (например, manager-routing.module.ts ), сообщение об ошибке:
Соответствует более одного модуля. Используйте параметр skip-import, чтобы пропустить импорт компонента в ближайший модуль.
не появляется, и компонент правильно генерируется и добавляется в модуль manager.module.ts .
НО БУДЬТЕ ОСТОРОЖНЫ ! имя модуля маршрутизации должно заканчиваться на " -routing "!
Если модулю маршрутизации присваивается имя, например, manager-router.module.ts , CLI будет выдавать сообщение об ошибке и ожидать, что вы предоставите опцию --module для автоматического добавления импорта компонента:
ng generate component some-name --module=manager.module.ts
или
ng generate component some-name --skip-import
если вы предпочитаете добавить импорт компонента вручную
-
Сделал трюк! Я имел lib-name.routing.module.ts
вместо lib-name-routing.module.ts
.
Есть два способа решить эту проблему.
1) Пропустите (используя --skip-import в команде) импорт по умолчанию и создайте компонент, и как только компонент будет создан, импортируйте его вручную везде, где вы хотите его использовать.
ng generate component my-component --skip-import
2) Укажите имя модуля явно, где вы хотите его импортировать
ng generate component my-component --module=my-module.module
Когда приложение или библиотека имеют несколько вложенных модулей
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
Угловой CLI
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
NRWL NX Угловой CLI
ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
результат
myApp
> src
> app
app.module.ts
> routes
> login
> auth
> my-auth
my-auth.component.ts etc...
login.module.ts
Я получаю ниже ошибку при попытке создать новый компонент в папке.
ошибка: более одного модуля соответствует. Используйте параметр skip-import, чтобы пропустить импорт компонента в ближайший модуль.
Я использовал приведенную ниже команду, и новый компонент был успешно создан в папке.
ng g c folderName/my_newComponent ---module ../app
Мой проект был создан с использованием Visual Studio Community 2017, и он создает 3 отдельных модуля: app.browser.module, app.server.module и app.shared.module
Чтобы создать мои компоненты, я проверил ответы выше и обнаружил, что мой модуль - app.shared.module.
Итак, я бегу:
ng g c componentName --module=app.shared.module
Если в папке приложения находится более одного модуля, генерировать компонент с помощью приведенной ниже команды не удастся:
ng generate component New-Component-Name
Причина в том, что угловой интерфейс командной строки обнаруживает несколько модулей и не знает, в какой модуль добавить компонент. Итак, вам нужно явно указать, какой компонент модуля будет добавлен:
ng generate component New-Component-Name --module=ModuleName
попробуйте ng g header заголовка компонента - Модуль приложения это работа для меня
app.routing.module.ts
следовательно, ошибка
Угловой CLI: 8.3.1
если у вас есть несколько module.ts
файлов внутри модуля, вам нужно указать, для какого файла модуля вы генерируете компонент.
ng g c modulefolder/componentname --module=modulename.module
например, у меня есть общая папка модуля, внутри которой я shared.module.ts
и material.module.ts
как это
shared
> shared.module.ts
> material.module.ts
и я хочу сгенерировать sidebar
компонент для shared.module.ts
тогда я буду запускать следующую команду
ng g c shared/sidebar --module=shared.module
если вы хотите экспортировать компонент, выполните следующую команду
ng g c shared/sidebar --module=shared.module --export
Angular CLI: 8.3.4 Узел: 10.16.3 Angualr: 4.2.5
Я использовал команду «dotnet new angular» для генерации проекта, и он сгенерировал 3 разных модуля в папке приложения (хотя простой тест с ng new project-name просто генерирует один модуль.
посмотрите модули в вашем проекте и определите, какой модуль вам нужен - затем укажите название
ng g c componentName --module=[name-of-your-module]
Вы можете прочитать больше о модулях здесь: https://angular.io/guide/architecture-modules
В моем случае кажется, что ng не зарегистрирован в моем пути к среде. Я использовал команду npm run для запуска команд ng. Имейте в виду, что для передачи аргументов вам нужно дополнительное - согласно спецификации запуска npm.
Пример: npm run ng gc компоненты / планирование - --module = app
Или: npm запустить ng gc компоненты / планирование - --skip-import
У меня было это предупреждение, когда это было в angular.json
конфиге:
"prefix": "app_ng"
Когда меняли на "app"
все работало отлично.
Просто чтобы добавить к этому еще одну информацию для тех, кто, как и я, у кого есть только одно приложение.
У меня было настроено приложение с основным app.module.ts, и у меня была маршрутизация с модулем маршрутизации в его собственной папке под основным приложением. Я прошел и сделал некоторую «уборку», так как у меня было несколько других вещей, которые нужно было организовать лучше. Одна вещь, которую я сделал, это переместил routing.module.ts в корневую папку; так как это был единственный файл в папке, я решил, что ему не нужна собственная папка.
Сначала это работало нормально, но в следующий раз, когда я попытался сгенерировать новый компонент (некоторое время спустя, через IDE WebStorm), это сообщение не сработало. Прочитав это, я попытался поместить модуль маршрутизации обратно в отдельную папку, и он снова заработал.
Так что обратите внимание на предупреждение других, не перемещайте модуль маршрутизации в свою корневую папку! Я уверен, что есть и другие способы справиться с этим, но я доволен этим пока что в его собственной папке и использую генератор IDE, как раньше.
Как взлом, ниже шагов, работал для меня.
1) Переместите файлы * .module.ts из src / app в папку вне проекта.
2) Выполнить команду для создания компонента [ng g c component-name]
3) Переместите обратно файлы * .module.ts в src / app /.
ng g c admin/manageUsers ---module ../app