Ответ 1
Задайте модуль с помощью параметра --module. Например, если основным модулем является app.module.ts, запустите это:
ng g c new-component --module app
Или, если вы находитесь в другом каталоге, тогда
ng g c component-name --module ../
Когда я пытаюсь создать компонент в угловом кли, он показывает мне эту ошибку. Как я могу избавиться от него?
Ошибка: сопоставляется более одного модуля. Используйте опцию skip-import, чтобы пропустить импорт компонента в ближайший модуль.
Я использую угловую версию cli: 1.4.1
Задайте модуль с помощью параметра --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 модуль, все в порядке, поэтому просто переместите вторичные модули в подпрограмму -folder.
В противном случае вы должны использовать --module
Он работает для меня
ng g component component-name --skip-import
Просто небольшое обновление для ответа Зиши.
В моем проекте все модули были помещены в папку под названием "modules", и все компоненты размещены в папке "components" в разделе "src/app",
поэтому для создания компонента по определенному пути я использовал следующий синтаксис:
ng gc components_path/имя_компьютера --module modules_path/module_name
пример:
ng gc components/login --module модули/приложение
Угловой CLI: 6.0.8
Узел: 10.4.0
ОС: linux x64
Угловое: 6.0.4
В случае наличия функционального модуля (например, manager.module.ts внутри подпапки eg//manager) с модулем маршрутизации, выведенным в отдельный NgModule (например, менеджер -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
если вы хотите добавить импорт компонента вручную
Когда приложение или библиотека имеют несколько вложенных модулей
myApp
> src
> app
app.module.ts
> routes
> login
> auth
login.module.ts
Angular CLI
ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts
NRWL NX angular 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
Мой проект был создан с использованием 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
Причина - это угловой CLI обнаруживает несколько модулей и не знает, в каком модуле добавить компонент. Итак, вам нужно явно указать, какой компонент модуля будет добавлен:
ng generate component New-Component-Name --module=ModuleName
При попытке создать новый компонент в папке я получаю сообщение об ошибке ниже.
ошибка: более одного модуля соответствует. Используйте параметр skip-import, чтобы пропустить импорт компонента в ближайший модуль.
Я использовал приведенную ниже команду, и новый компонент был успешно создан в папке.
ng g c folderName/my_newComponent ---module ../app
Вариант 1:
Здесь автоматически добавляется новый компонент в модуль приложения.
Вариант 2: если вы не хотите автоматически связываться с любым средством модуля. Создайте модуль для этого нового компонента, а затем создайте компонент
попробуйте ng g component header --module app, это для меня работа
если у вас более одного модуля, вам нужно указать имя модуля
ng g c componentName --module=modulename.module
Angular 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 новым именем проекта просто генерирует один модуль.
посмотрите модули в вашем проекте и определите, какой модуль вам нужен, а затем укажите имя
ng g c componentName --module=[name-of-your-module]
Вы можете узнать больше о модулях здесь:https://angular.io/guide/architecture-modules
В качестве взлома, ниже шагов, работал на меня.
1) Перенесите файлы *.module.ts из src/app в местоположение вне проекта.
2) Выполнить команду для создания компонента [ng gc component-name]
3) Верните файлы *.module.ts в src/app/