Angular 2:输入每4位后加连字符,卡号输入

Angular 2 : add hyphen after every 4 digit in input , card number input

我需要在输入的每 4 位数字后添加一个连字符,我在控制台中得到了这个,我怎样才能实现这个以更改 angular 2

中的输入

我使用的代码如下 .ts

mychange(val){
  var self = this;
  var chIbn = self.storeData.iban_no.split("-").join("");
  if (chIbn.length > 0) {
   chIbn = chIbn.match(new RegExp('.{1,4}', 'g')).join("-");
 }
 console.log(chIbn);
 self.storeData.iban_no = chIbn;
}

Html

 <input type="text" name="din" (ngModelChange)="mychange($event)"  class="form-control" [(ngModel)]="storeData.iban_no"   required>

控制台

输入

输入本身需要连字符值

您需要进行如下更改

<input type="text" name="din" (ngModelChange)="mychange($event)"  
class="form-control" [ngModel]="iban_no"   required>

你不需要 [(ngModel)] 只需保留 [ngModel] 因为你正在处理更改事件,并且从方法中这样做,你不需要 self 在 angular this 会好的。

  mychange(val) {
    const self = this;
    let chIbn = val.split('-').join('');
    if (chIbn.length > 0) {
      chIbn = chIbn.match(new RegExp('.{1,4}', 'g')).join('-');
    }
    console.log(chIbn);
    this.iban_no = chIbn;
  }

你的方法也有问题,你需要直接使用 val 而不是 属性 因为你试图修改 val 为 属性 赋值.

创建一个指令来实现这一点。

您可以使用 HostBinding 功能获取指令附加到的元素并检索元素的值并对值进行操作。