В Angular у нас не может быть двух компонентов на одном элементе .
В сообщении об ошибке указывается, что Angular-компилятор обнаружил два компонента, которые соответствуют элементу <mat-form-field
.
Также он указывает на модуль, где это произошло.
ng: ///InputControlsModule/EmailInputComponent.html@1: 2
И печатает эти конфликтующие компоненты:
MatFormField, MatFormField
Поскольку эти компоненты имеют одно и то же имя, это может означать только одно:
Вы каким-то образом импортировали в InputControlsModule
два разных модуля, которыедиректива export MatFormField
.
Просмотр вашего модуля:
@NgModule({
imports: [
...
MatFormFieldModule,
MatInputModule
],
...
})
export class InputControlsModule {}
Я заметил, что вы импортировали MatFormFieldModule
, а также MatInputModule
, который экспортирует MatFormFieldModule
(* 1033)* Но вы можете подумать: я прочитал документацию, и это не должно быть проблемой, поскольку Angular кэширует один раз импортированный модуль:
Что если я импортирую один и тот же модуль дважды?
Теперь посмотрим, как вы импортируете эти модули:
import { ...MatInputModule} from '@angular/material';
|
material.umd.js
import { MatFormFieldModule } from '@angular/material/form-field';
|
material-form-field.umd.js
Каквы можете догадаться, что, поскольку эти модули из разных js-файлов отличаются друг от друга.
Так что, чтобы исправить это, вы должны импортировать их из одного пакета.
import {
...
MatInputModule,
MatFormFieldModule
} from '@angular/material';
Но так как MatInputModule
ужеэкспорт MatFormFieldModule
вам не нужно его импортировать.
разветвленный стек-блиц