2017-07-27 25 views
1

以下のテキストフィールドが必要です。ユーザーが自分の入力を入力を開始すると、それはユーザー入力時に入力フィールドの値を通貨として入力

0.00 (Start) 
0.01 
0.12 
1.23 
12.34 
123.45 
1,234.56 
12,345.67 
123,456.78 

以下のようにフォーマットを取得する必要があり、ユーザーがテキストボックスを空にすることはできませんつまり、私は正常に動作通貨マスクの下に使用しますが、私は、フィールドが空として作ることができないのです。このディレクティブは、デフォルトで値を0.0にします。私はディレクティブをオーバーライドすることができるので、ユーザーはボックスも空のままにすることができますか?または同じことをするための他の指示?私は、私は、最新の [email protected]でplunkerにも試験し、すべてがうまく動作しているようですが、私はこれが役立つはずだと思うの角4プロジェクト

https://www.npmjs.com/package/ng2-currency-mask

答えて

2

を使用しています。

import { Directive, ElementRef } from '@angular/core'; 
import { NgModel } from '@angular/forms'; 

@Directive({ 
    selector: '[appZero]' 
}) 
export class AppZeroDirective { 

    private _restStage: boolean = false; 

    constructor(
     private _model: NgModel, 
     private _elementRef: ElementRef 
    ) { 

     this._model.control.valueChanges.subscribe((value: any) => { 
      if ((value === null || value === 0) && !this._restStage) { 
       this._restStage = true; 
       this._elementRef.nativeElement.value = null; 
       this._model.control.setValue(null); 
       return; 
      } 
      this._restStage = false; 
     }); 

    } 
} 

このようなあなたの入力に[appZero]ディレクティブを適用します。

<input appZero currencyMask [(ngModel)]="value"> 
+0

あなたがplunkerを共有することができれば、それが参考になる – Hacker

+0

https://plnkr.co/edit/QdRJrJwaNFJoNwAiHlNz?p=infoあなたはそれを開くことができますか? – LkPark

+0

私は自分のコードで実装して、表示値が変わったのを見ていますが、モデル値を取ろうとするとモデル値はまだ0です。私はそれもnullまたは ''にすることができますどのような方法。テキストボックスが空のときにエラーメッセージを表示する必要があるからです。 – Hacker

関連する問題