2017-09-13 22 views
1

thousand separatorinput maskの指示が必要です。そうでない場合は、Ionic 3 appです。私は2つの指令を試しました。しかし、誰も働いていませんでした。あなたはそれのために働く指示を知っていますか?イオンセパレータが1000個の入力マスク3

<ion-input type="tel" [ngModel]="data?.budget" formControlName="budget" (ngModelChange)="data.budget=$event"></ion-input> 

.htmlを50,000

私はGitの上の問題を記録しています。それも参照してください。

text-mask Issue

ng2-currency-mask Issue

+0

パイプを使用できませんか? –

+2

これは '入力ボックス '用です。入力フィールドに 'pipe'を使うことはできません。すでに存在するテキストのみを書式設定しています。ユーザーが '数値'の内容を 'input'ボックスに入力している間に、それをフォーマットする必要があります。 @TheDictator – Sampath

+1

私は私のフォーマット指令のionicのクイックバージョンを書いた。あなたは一見をしたいのですか、または図書館を好むでしょうか? – Vega

答えて

1

は、ここでも、イオンに働くフォーマットの私のバージョンです。

活字体:

format(valString) { 
    if (!valString) { 
     return ''; 
    } 
    let val = valString.toString(); 
    const parts = this.unFormat(val).split(this.DECIMAL_SEPARATOR); 
    return parts[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, this.GROUP_SEPARATOR) + (!parts[1] ? '' : this.DECIMAL_SEPARATOR + parts[1]); 
}; 

unFormat(val) { 
    if (!val) { 
     return ''; 
    } 
    val = val.replace(/^0+/, ''); 

    if (this.GROUP_SEPARATOR === ',') { 
     return val.replace(/,/g, ''); 
    } else { 
     return val.replace(/\./g, ''); 
    } 
}; 

はHTML:

<ion-input [(ngModel)]="budget" pattern="^[$\-\s]*[\d\,]*?([\.]\d{0,10})?\s*$" 
style="border:1px solid black" #myBudget="ngModel" (input)="budget = format(budget)"></ion-input> 
<p style="color:red" *ngIf="myBudget.errors && myBudget.errors?.pattern">Enter numbers only</p> 

それは(それは '$' 記号をリード受け入れる)エラー管理と通貨の他にいくつかの改善を必要としています。私は10進数の数字を受け入れるように正規表現を設定しました。

DEMO

あなたは何の小数と数字のみの入力を希望しない場合は、このDEMOは方法を示しています。

+0

実際、私の状況はとてもシンプルです。私はちょうどこのように書式を設定する必要があります: '50,000' '小数点なし 'と' '通貨なし' .1000個の区切り文字だけです。私はそれができないことを願っていますか?そのサンプルも表示できますか?私は 'Regex'についてうまくやっていません。あなたがここで手伝ってくれることを祈っています:) – Sampath

+0

私の更新を見てください – Vega

+1

本当に涼しいようです!Angularの 'directive'としてこれを改善し、Ionicコミュニティのための' MIT'プロジェクトとしてリリースしてくれることを願っています。ありがとうございました! :) – Sampath