Angular: Справка по редактируемой форме на месте

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

Я создал этот StackBlitz, где я получаю сообщение об ошибке: No provider for NgControl, Я не хочу наматывать элементы формы на каждый из редактируемых компонентов управления, которые я хочу создать. Пожалуйста, помогите мне с этим.

Мой предполагаемый контроль - что-то вроде<editable-control [mode]="formMode" type="text"></editable-control>

1 ответ

Ваш пользовательский компонент формы реализует ControlValueAccessor интерфейс, поэтому он нуждается в NgControl поставщик. Вы должны использовать ReactiveFormsModule вместо FormsModule,

Таким образом, вы должны импортировать его из @angular/forms и добавьте его в массив импорта соответствующего NgModule:

// ...
import { ReactiveFormsModule } from '@angular/forms';

@NgModule({
  imports: [
     // ...
     ReactiveFormsModule
  ]
})
// ...

Чтобы использовать свой пользовательский компонент, вы можете использовать его вместе с formGroup директивы. Например:

<form [formGroup]="myForm">
  <editable-control [mode]="formMode" type="text" formControlName="myText">
  </editable-control>
</form>
Другие вопросы по тегам