Angular 如何创建自定义的被动表单元素?
我正在Angular中使用反应式表单,我正在尝试创建一个自定义表单元素,以便可以在表单中使用按钮。我试图遵循的教程,但不清楚如何将其集成到我的组件。目前,我得到以下错误Angular 如何创建自定义的被动表单元素?,angular,angular-reactive-forms,controlvalueaccessor,Angular,Angular Reactive Forms,Controlvalueaccessor,我正在Angular中使用反应式表单,我正在尝试创建一个自定义表单元素,以便可以在表单中使用按钮。我试图遵循的教程,但不清楚如何将其集成到我的组件。目前,我得到以下错误 ERROR Error: No value accessor for form control with name: 'coverage_for_domestic_partners' 以下是我的代码,如有任何帮助,将不胜感激 //HTML <div class="button-group" [formGroup]="gr
ERROR Error: No value accessor for form control with name: 'coverage_for_domestic_partners'
以下是我的代码,如有任何帮助,将不胜感激
//HTML
<div class="button-group" [formGroup]="group">
<button
*ngFor="let option of config.options"
class="button button--toggle"
[ngClass]='{"is-active": option.selected}'
(click)="select($event, option)"
[formControlName]="config.key">
<div class="button-content">{{option.key}}</div>
</button>
</div>
您需要实现接口,为此,您需要实现以下方法:
interface ControlValueAccessor {
writeValue(obj: any): void
registerOnChange(fn: any): void
registerOnTouched(fn: any): void
setDisabledState(isDisabled: boolean)?: void
}
您可以正确地看到我的示例实现
当组件的值更改时,必须调用在ts文件中注册的OnChange
方法
你可以看到我的呼叫示例
之后,您可以通过表单中的标记选择器(在您的例子中是z-toggle-group
)使用组件,并且您将能够使用formControlName
<div class="button-group" [formGroup]="group">
<button
*ngFor="let option of config.options"
class="button button--toggle"
[ngClass]='{"is-active": option.selected}'
(click)="select($event, option)">
<z-toggle-group [formControlName]="config.key"></z-toggle-group>
<div class="button-content">{{option.key}}</div>
</button>
</div>
{{option.key}
您的代码是否正常工作。写入值(obj:any)在哪里:void
registerChange(fn:any):void
<div class="button-group" [formGroup]="group">
<button
*ngFor="let option of config.options"
class="button button--toggle"
[ngClass]='{"is-active": option.selected}'
(click)="select($event, option)">
<z-toggle-group [formControlName]="config.key"></z-toggle-group>
<div class="button-content">{{option.key}}</div>
</button>
</div>