Я пытаюсь иметь формат поля ввода / значения маски по мере их ввода, в то время как фактическая модель сохраняет необработанное (или иначе отформатированное) значение. Я думаю о телефонных номерах и т. Д., Но для простоты я использую прописные буквы для тестирования.
Я пробовал кучу вещей, надеясь, что это так же просто, как директива. Но, похоже, не удается заставить отображаемое значение отклоняться от значения формы.
plunk: http://plnkr.co/edit/VH5zn4S8q28CBpFutBlx?p=preview
Вот директива:
@Directive({
selector: '[uppercase]',
host: {
'(input)': 'onInputChange()',
}
})
export class UppercaseDirective {
constructor(private model: NgFormControl) { }
onInputChange() {
let newValue = this.model.value.toUpperCase();
this.model.viewToModelUpdate(newValue);
this.model.valueAccessor.writeValue(newValue);
}
}
и форма:
<form [ngFormModel]='myForm'>
<input [ngFormControl]='myForm.controls.field' uppercase>
<div>
{{ myForm.value.field }}
</div>
</form>