0
У меня есть компонент, который обертывает поле ввода управления формой, для этого я пытаюсь реализовать ControlValueAccessor
.Пользовательский контроль: ControlValueAccessor не работает
Но я не понимаю, как это работает.
таможенно-input.component.ts:
import { Component, Input } from '@angular/core';
import { ControlValueAccessor, FormGroup } from '@angular/forms';
const noop =() => {};
@Component({
selector: 'custom-input',
template: '<input [(ngModel)]="value" (blur)="onBlur()">{{value}}'
})
export class CustomInputComponent implements ControlValueAccessor {
private onTouchedCallback:() => void = noop;
private onChangeCallback: (_: any) => void = noop;
private _value: any = '';
get value() {
return this._value;
}
set value(v: any) {
if (v !== this._value) {
this._value = v;
this.onChangeCallback(v);
}
}
onBlur() {
this.onTouchedCallback();
}
writeValue(value: any): void {
this._value = value;
}
registerOnChange(fn: any): void {
this.onChangeCallback = fn;
}
registerOnTouched(fn: any): void {
this.onTouchedCallback = fn;
}
}
И я использую это так:
<custom-input [(ngModel)]="foo"></custom-input>
Исключение:
No value accessor for form control with unspecified name attribute
Угловая Verion: 2,1. 2
Plunker: http://plnkr.co/edit/PgL81hTMdwJpPUs4wOOU?p=preview
Спасибо, это работает. – cebor