3
입력을 dd-mm-yyyy로 형식화하고 텍스트 값 및 JavaScript 날짜를 값으로 갖는 속성 지시문이 있어야합니다. rc.3에서 나는 ngFormControl.valueAccessor.writeValue()
과 몇 가지 다른 방법을 사용했습니다. 이제는 NgFormControl이 릴리스 버전에서 사라진 것으로 보입니다. 지금 무엇을 사용해야합니까? 여기에 내가 전에 무엇을하고 있었는지입니다 :입력 호스트 텍스트 및 값을 수정하기위한 각도 2 속성 지시문
<input type="text" format-date2 [ngFormControl]='formControls.dateOfMarriage'>
import {Directive, ElementRef} from '@angular/core';
import {NgFormControl} from '@angular/common';
@Directive({
selector: '[format-date2]',
host: {
'(input)': 'onInputChange()',
'placeholder': 'dd-mm-yyyy',
},
})
export class FormatDate2 {
viewValue;
modelValue;
currentValue = '';
el: HTMLInputElement;
constructor(private model: NgFormControl, private elementRef: ElementRef) {
this.el = elementRef.nativeElement;
}
ngOnInit() {
if (this.model.control.value) {
let d = new Date(this.model.control.value);
let s = this.pad(d.getDate()) + '-' + this.pad(d.getMonth() + 1) + '-' + d.getFullYear();
this.model.valueAccessor.writeValue(s);
}
}
pad(n) {
return n < 10 ? '0' + n : n;
}
onInputChange() {
let i = this.el.selectionEnd - this.el.value.length;
this.format(this.el.value);
i = this.viewValue.length + i;
this.model.control.updateValue(this.modelValue);
this.model.valueAccessor.writeValue(this.viewValue);
this.el.setSelectionRange(i, i);
return false;
}
format(val) {
// some code
// this.modelValue = 'some value';
// this.viewValue = 'another value'
}
}
특히 NgControl.control.setValue() 및 NgControl.valueAccessor.writeValue()를 사용했습니다. – mishap