Задача, которую я пытаюсь решить:
Создание многократно используемых оболочек компонента ввода для экономии времени при написании шаблона для форм.
Пример того, что я имею в виду:
Вместо того, чтобы писать следующий шаблон:
<form [formGroup]="myForm">
<mat-form-field>
<input matInput placeholder="Email" [formControl]="email" required>
<mat-error *ngIf="email.invalid">{{getErrorMessage()}}</mat-error>
</mat-form-field>
<form>
Я хотел бы написать:
<form [formGroup]="myForm">
<my-input-component [form]="myForm" [myFormControl]="email" [myFormControlName]="'email'" [label]="'Email'"></my-input-component>
</form>
Где my-input-component выглядит так:
<mat-form-field [formGroup]="form">
<input
matInput
type="text"
[attr.inputmode]="inputMode"
[placeholder]="label"
[formControlName]="myFormControlName"
/>
<mat-error class="errors" *ngIf="myFormControl.invalid">
<div>{{ getError() }}</div>
</mat-error>
</mat-form-field>
Это работает как есть, но я не знаю, является ли это хорошим подходом для передачи FormGroup и FormControls как привязок.
После поиска в Интернете я постоянно сталкивался с NG_CONTROL_VALUE_ACCESSOR и был немного озадачен, если это можно или нужно использовать в моем сценарии.
Я не намерен, чтобы эти компоненты были "пользовательскими" в смысле использования ползунка в качестве элемента управления формой или чего-то в этом роде, а просто хотели, чтобы "обертки" сэкономили некоторое время.
Любые предложения или советы по этой теме будут с благодарностью!