Angular ng2货币掩码十进制输入点或逗号
我想输入值,这是允许我像点或逗号符号,然后它将取代逗号只 我用的是currencymask 这是我的密码 payment-trans.page.htmlAngular ng2货币掩码十进制输入点或逗号,angular,ionic-framework,input,pipe,currency,Angular,Ionic Framework,Input,Pipe,Currency,我想输入值,这是允许我像点或逗号符号,然后它将取代逗号只 我用的是currencymask 这是我的密码 payment-trans.page.html <ion-header no-border> <ion-toolbar> <ion-title> {{'idchecker.payment.paymentTrans.title' | translate}} </ion-title> </ion-tool
<ion-header no-border>
<ion-toolbar>
<ion-title>
{{'idchecker.payment.paymentTrans.title' | translate}}
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content padding-horizontal>
<div class="bar"></div>
<div class="decription">
<div class="sub-header">
<h5>
{{'idchecker.payment.paymentTrans.cardnr' | translate}} {{cnumber}}
</h5>
</div>
<p text-wrap>
{{'idchecker.payment.paymentTrans.text' | translate}}
</p>
</div>
<div class="btns-holder">
<form [formGroup]="form">
<ion-item lines="none">
<input currencyMask formControlName="amount" [textMask]="{mask:numberMask}" type ="text" placeholder="€ " />
<!-- Test1 <input currencyMask formControlName="amount" type ="text" placeholder="€ " />-->
<!-- test2 <input formControlName="amount" (keyup)="onKeyUp($event)" type ="text" placeholder="€ " />-->
</ion-item>
<ion-button expand="block" (click)="proceed()" [disabled]="!form.valid">
{{'idchecker.payment.paymentTrans.ok' | translate}}
</ion-button>
<ion-button expand="block" (click)="cancel()">
Annuleren
</ion-button>
</form>
</div>
</ion-content>
<ion-footer no-border>
<ion-toolbar text-center>
<ion-button fill="none" size="large" (click)="showMenu()">
<ion-icon name="menu"></ion-icon>
</ion-button>
</ion-toolbar>
</ion-footer>
{{'idchecker.payment.paymentTrans.title'| translate}}
{{'idchecker.payment.paymentTrans.cardnr'| translate}{{{cnumber}}
{{'idchecker.payment.paymentTrans.text'| translate}}
{{'idchecker.payment.paymentTrans.ok'| translate}}
环烯
payment-trans.page.ts
import {Component, OnInit} from '@angular/core';
import {BarcodeScanner} from '@ionic-native/barcode-scanner/ngx';
import {AlertController, ModalController, NavController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
import {BasePage} from '../shared/util/base.page';
import {createNumberMask} from 'text-mask-addons/dist/textMaskAddons';
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
import {TranslateService} from '@ngx-translate/core';
@Component({
selector: 'app-payment-trans',
templateUrl: './payment-trans.page.html',
styleUrls: ['./payment.page.scss'],
})
export class PaymentTransPage extends BasePage implements OnInit {
amount: number;
token: string;
labels: any;
public form: FormGroup;
//NUMBER_REGEXP = /^(\d+)(,\d{1,2}|\.\d{1,2})?€/;
numberMask = createNumberMask({ prefix: '€ ' , thousandsSeparatorSymbol: '', allowDecimal: true, decimalSymbol: ',' });
//numberMask = createNumberMask({ prefix: '€ ' , thousandsSeparatorSymbol: '', allowDecimal: true,decimalSymbol: '.' });
constructor(modalCtrl: ModalController, private formBuilder: FormBuilder, private barcodeScanner: BarcodeScanner, private route: ActivatedRoute,
private alertCtrl: AlertController, public navCtrl: NavController, private translateService: TranslateService) {
super(modalCtrl);
this.buildForm();
}
private buildForm() {
this.form = this.formBuilder.group({
amount: [null, [Validators.required]]
});
}
ngOnInit() {
this.cnumber = this.route.snapshot.paramMap.get('cnumber');
this.translateService.get('idchecker.payment.paymentTrans').subscribe( res => {
this.labels = res;
});
}
async presentAlert() {
const alert = await this.alertCtrl.create({
header: this.labels.errorTitle,
message: this.labels.errorMessage,
mode: 'ios',
buttons: [ {
text: this.labels.askSupport,
handler: () => {
this.navCtrl.navigateRoot('support');
}
},
{
text: this.labels.again,
role: 'cancel',
}]
});
await alert.present();
}
proceed() {
if (Number(this.form.get('amount').value.replace(',', '.').substring(1).trim()) < 0.01) {
this.presentAlert();
return;
}
this.navCtrl.navigateRoot('payment/confirm/' + this.cnumber + '/' + this.form.get('amount').value.substring(1).trim());
}
cancel() {
this.navCtrl.navigateRoot('payment');
}
//const NUMBER_REGEXP = /^(\d+)(,\d{1,2}|\.\d{1,2})?€/;
/* public onKeyUp(event: any) {
let newValue = event.target.value;
let regExp = new RegExp(this.NUMBER_REGEXP);
if (!regExp.test(newValue)) {
event.target.value = newValue.slice(0, -1);
}
}*/
}
从'@angular/core'导入{Component,OnInit};
从'@ionic native/barcode scanner/ngx'导入{BarcodeScanner};
从'@ionic/angular'导入{AlertController,ModalController,NavController};
从'@angular/router'导入{ActivatedRoute};
从“../shared/util/base.page”导入{BasePage};
从“文本掩码加载项/dist/textMaskAddons”导入{createNumberMask};
从“@angular/forms”导入{FormBuilder、FormGroup、Validators};
从'@ngx translate/core'导入{TranslateService};
@组成部分({
选择器:'应用程序支付交易',
templateUrl:“./payment trans.page.html”,
样式URL:['./payment.page.scss'],
})
导出类PaymentTransPage扩展BasePage实现OnInit{
金额:数字;
令牌:字符串;
标签:任何;
公共形式:FormGroup;
//数字\u REGEXP=/^(\d+)(,\d{1,2}\.\d{1,2})?€/;
numberMask=createNumberMask({前缀:'€',千位辅助符号:“”,allowDecimal:true,小数符号:'','});
//numberMask=createNumberMask({前缀:'€',千位辅助符号:“”,allowDecimal:true,小数符号:'.'});
构造函数(modalCtrl:ModalController,私有formBuilder:formBuilder,私有barcodeScanner:barcodeScanner,私有路由:ActivatedRoute,
专用alertCtrl:AlertController,公用navCtrl:NavController,专用translateService:translateService){
超级(modalCtrl);
这个.buildForm();
}
私有buildForm(){
this.form=this.formBuilder.group({
金额:[null,[需要验证程序]]
});
}
恩戈尼尼特(){
this.cnumber=this.route.snapshot.paramMap.get('cnumber');
this.translateService.get('idchecker.payment.paymentTrans').subscribe(res=>{
this.labels=res;
});
}
异步presentAlert(){
const alert=wait this.alertCtrl.create({
标题:this.labels.errorTitle,
消息:this.labels.errorMessage,
模式:“ios”,
按钮:[{
文本:this.labels.askSupport,
处理程序:()=>{
this.navCtrl.navigateRoot('support');
}
},
{
text:this.labels.再次,
角色:“取消”,
}]
});
等待警报。当前();
}
继续{
if(Number(this.form.get('amount').value.replace(',',').substring(1.trim())<0.01){
这个.presentAlert();
返回;
}
this.navCtrl.navigateRoot('payment/confirm/'+this.cnumber+'/'+this.form.get('amount').value.substring(1.trim());
}
取消{
此.navCtrl.navigateRoot(“付款”);
}
//常量数\u REGEXP=/^(\d+)(,\d{1,2}\.\d{1,2})?€/;
/*公共onKeyUp(事件:任何){
让newValue=event.target.value;
设regExp=newregexp(this.NUMBER\u regExp);
如果(!regExp.test(newValue)){
event.target.value=newValue.slice(0,-1);
}
}*/
}
测试-1在这个输入中,它只允许点取决于数字掩码,但点是默认值。我不能输入小数点
<input currencyMask formControlName="amount" [textMask]="{mask:numberMask}" type ="text" placeholder="€ " />
测试-2在这种情况下,两者都允许,但我不能像这样输入数字
e、 g 111.22-->结果(11.22)或20,11-->结果(0,11)
如何制作允许两个符号的货币格式管道?是否有人可以解决此问题??
<input currencyMask formControlName="amount" type ="text" placeholder="€ " />