2
我正在嘗試創建一個將輸入值格式化爲貨幣格式的指令。在應用Angular2 ngModel後格式化輸入值
我能夠做我必須做的重點和模糊,並在ngOnInit鉤子(和任何其他掛鉤),輸入元素還沒有任何值應用於它。
如何「觀察」輸入值,並在初始值應用時對其進行格式化?
這裏是我的指令:
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