2017-07-21 12 views
0

次のコード行があります。これは基本的に私のhtmlの入力フィールドです。私はそれが通貨フィールドなので、それに番号のパイプを追加しています。デフォルトでは空ですが、ユーザーが値を追加すると、通貨として自動フォーマットされます。しかしここではまれな問題を抱えています。数値パイプで数値の代わりに文字列値を与える

vendor.dll.js:55094 EXCEPTION:パイプの無効な引数 '8,888.038' 'DecimalPipe'

HTML:

<div class="form-input"> 
        <cust-input 
          [ngModel]="Amnt | number:'.2-2'" 
          (ngModelChange)="Amnt=$event" 
          type="tel" 
          (keyup)="getAmount(RqstdAmnt)" 
          [ngClass]="{'inValid-requested-amount-class': AmountValid===false}" 
          placeholder="{{'amount_placeHolder' | translate}}"> 
        </cust-input> 
       </div> 

TS:

RqstdAmnt:number; 
getRequestedAmount(amount:number) { 
     if (amount > somevalue) { 
      console.log('value higher'); 
     } else { 
      console.log('value lower'); 
     } 
    } 

月私はそれをする正しい方法が何かを知っていますか? mouseoutが通貨パイプを追加したときに、ユーザーがパイプなしの入力フィールドをクリックすると、別の方法があります。私はそれを行う方法がわかりません。どうすればいいの?前もって感謝します。

+0

あなたがフィールドにAmntを宣言するにはどうすればよいですあなたのコンポーネントですか? – Vega

+0

はい。それは私が私の機能の上に置いたものです – blackdaemon

答えて

0

ngModelのパイプを使用するのは、ユーザーが入力するたびにパイプがすべてのキーストロークで実行されるようにするのではなく、私はblurfocusを使って同様のシナリオを実装しました。 .00は、ユーザーの入力に応じて追加および削除され、相互作用を妨げません。あなたはあなたにそれを使用したい場合はここで

はコードです:

HTML:

<md-input-container class="example-full-width"> 
    <input mdInput placeholder="Amount" 
      type="number" 
      [(ngModel)]="amount" 
      formControlName="amount" 
      (blur)="format(amount)" 
      (focus)="remove(amount)"> 
    </md-input-container> 

TS:

format(amt){ 
    // console.log(amt % 1 == 0); 
    if(amt % 1 == 0){ 
     amt = amt + '.00'; 
     this.amount = amt; 
    } 
    } 

    remove(amt){ 
    // console.log(amt % 1 == 0); 
    if(amt % 1 == 0){ 
     this.amount = amt * 1;; 
    } 
    } 

    submit(form){ 
    alert(JSON.stringify(form)); 
    } 

Plunker demo

関連する問題