2017-09-07 5 views
1

私はテンプレートでこれを持っている:InvalidPipeArgument: 'DecimalPipe'パイプの '333,00'ですか?

<input class="ui-g-4 right" [ngModel]="product.itemamount | number:'1.2-2'" (ngModelChange)="product.itemamount = $event"> 

しかし、私は、入力の値を変更するときイムは、このエラーを取得。

InvalidPipeArgument: '333,00' パイプのための 'DecimalPipe'

任意の提案?角度docsから

+0

あなたもあなたがそこに行って何をあなたのパイプを追加し、追加されている値の種類、 'product.itemamount'何であるか、あなたは何を与えることなく助けを期待していカント – Rakeschand

答えて

0

は、テキストとして番号をフォーマットします。

<input>タグでDecimalPipeを使用することはできません。同様に、以下:

<p> {{product.itemamount | number: '1.2-2'}} ></p> 

は、カスタムパイプ/ディレクティブ/メソッドを記述する必要が入力などの書式設定を行うには...

UPDATE:ここ

はいくつかのアイデアですカスタム検証ディレクティブ:

HTML

<input decimal [(ngModel)]="value" name="value" > 

指令

HostListener('input', ['$event']) 
    onInput($event){ 
    let formattedValue: string; 
    let arrayValue = this.el.nativeElement.value.split('.'); 

    let patternValidation = arrayValue[0].match(/[0-9]{3}/); 

    if (patternValidation !== null && arrayValue[0].length > 3) { 
    let thousands = Array.from(Array.from(arrayValue[0]).reverse().join('').match(/[0-9]{3}/).join()).reverse().join(''); 
    let replacement = arrayValue[0].replace(thousands.replace(/\D/g, ''), ''); 
    formattedValue = (replacement.length > 0 ? replacement + "," : "") + thousands; 
    } else { 
    formattedValue = arrayValue[0]; 
    } 

    if (arrayValue.length > 1) { 
    formattedValue = formattedValue + "." + arrayValue[1].substring(0, 2); 
    } 

} 

Stackblitz demo

+0

これは面白いかもしれません:https://stackoverflow.com/a/41821711/5468463 – Vega

+0

私はその値を変更することができるように入力が必要です...私はそれを表示したくないです。 – None

+0

オプションの1つは、入力のモデルとして2番目のプロパティを作成し、その上で(変更したい)プロパティなどを更新することです。それでもカスタムパイプが必要です。 – Vega