【发布时间】:2017-03-12 09:11:37
【问题描述】:
我正在尝试创建一个指令,将输入值格式化为货币格式。
我能够在焦点和模糊上做我必须做的事情,并且在 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);
}
}
【问题讨论】:
标签: angular angular2-directives