[英]Angular X directive: the best way to handle ngModel value change
我有這樣的指令,它處理onBlur / onFocus更改並將$
符號添加到輸入值的開頭:
@Directive({
selector: "[inputChanger]",
host: {
"(focus)": "onFocus($event)",
"(blur)": "onBlur($event)"
}
})
export class InputChangerDirective implements OnChanges {
@Input("inputChanger") type: string;
@Input() serverValue: string;
constructor(private model: NgModel, private el: ElementRef) {}
ngOnChanges(changes) {
if (changes.serverValue && changes.serverValue.currentValue) {
setTimeout(() => {
this.el.nativeElement.dispatchEvent(new Event("blur"));
});
}
}
onFocus(element: any) {
element.target.value = this.model.model || "";
}
onBlur(element: any) {
if (Number(this.model.model)) {
element.target.value = "$" + Number(this.model.model);
}
}
}
當我blur
我的輸入或來自服務器的數據到來時,我需要以某種方式添加此$
...我做起來有些棘手...我添加了一個新的輸入serverValue
,它等於服務器的響應value
並收聽在指令中。
但是我認為這是一個不好的方法。
也許有更好的方法來填充輸入,偵聽ngModel的更改並設置其格式?
您可以在這里檢查我的沙箱: https : //codesandbox.io/s/18qlqny42q ,以清晰了解我的工作方式...
您可以使用管道來格式化輸入值。 像這樣
<input type="text" (ngModel)="model" [value]="text | pipe" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.