入力値を通貨形式にフォーマットする指令を作成しようとしています。Angular2 ngModelを適用した後の入力値のフォーマット
私はフォーカスとぼかしで何をしなければならないのですか?ngOnInitフック(と他のフック)では、input要素にまだ値が適用されていません。
入力値を「監視」し、初期値が適用されたときにどのようにフォーマットするのですか?ここで
は私のディレクティブです:
テンプレートでimport {
Input,
Directive,
HostListener,
ElementRef,
Renderer,
OnInit
} from '@angular/core';
import { NgModel } from '@angular/forms';
import { CurrencyPipe } from '@angular/common';
@Directive({
selector: '[currencyInput]',
providers: [NgModel],
host: {
'(input)': 'onInputChange()'
}
})
export class CurrencyInputDirective implements OnInit {
@Input() ngModel: number;
private elem: HTMLInputElement;
constructor(
private el: ElementRef,
private render: Renderer,
private currencyPipe: CurrencyPipe,
private model: NgModel,
) {
this.elem = el.nativeElement;
}
ngOnInit() {
this.elem.value = this.currencyPipe.transform(parseInt(this.elem.value), 'USD', true);
}
@HostListener('focus', ['$event.target.value'])
onFocus(value: string) {
this.elem.value = value.replace(/\,/g, '');
}
@HostListener('blur', ['$event.target.value'])
onBlur(value: string) {
this.elem.value = this.currencyPipe.transform(parseInt(value), 'USD', true);
}
}
私は、すべてのライフサイクルフックを試してみましたことを言及しているはず、と私は常に空の値を取得します。 – justinledouxweb