网站搜索

angular - 在 ngx-mask 中掩码 angular8 的行为


我有一个组件,我需要根据用户输入的参数设置一个掩码,并且如果输入超过 11 位 CPF,那么该字段将使用 CNPJ 的掩码。以下是代码片段:我正在使用 ngx-mask;

<input type="text" class="form-control form-control-sm" formControlName="cpf_cnpj" [mask]="mask" (keyup)="cpfcnpjmask($event)">
 cpfcnpjmask() {
    const value = this.dadosBancariosForm.get('cpf_cnpj').value;
    console.log(value, value.length,this.dadosBancariosForm)
    if(value.length <= 14) {
      this.mask = '00.000.000/0000-00'
    }
    else {
      this.mask = '00.000.0000-00'
    }
  }


在这段代码中,它只采用第一次咀嚼,从不进行第二次。有人会有解决这个僵局的方法,或者有某种实现此目的的掩码。感激不尽。

答案#1

你的条件是相反的,将 if 块改为 else,并尝试使用 9s...

static MASCARA_CPF = "999.999.999-99";
static MASCARA_CNPJ = "99.999.999/9999-99";

答案#2

根据你的需求,我认为这是我能想到的方法。请尝试像这样更改条件,我觉得它会有效。

if(value.length > 11){
  console.log('here');
  this.mask = '00.000.000/0000-00';
}
else if(value.length == 11){
  this.mask= '00.000.000/0000-00';
}
else if (value.length < 11){
   this.mask= '00.000.0000-00';
}