javascript - 当用户在 Angular 6 中键入时更改输入字段文本

标签 javascript angular typescript angular-material

我有一个函数可以在用户输入时添加和删除冒号,但是输出显示在输入字段之外,因此我试图在输入时更改输入字段。我有以下在(更改)上执行的函数。

这是代码

<mat-form-field>
  <input matInput (change)="changedInput()" placeholder="MAC address" name="mac_address" required [(ngModel)]="model.mac_address" (blur)="validate()">
  <mat-error *ngFor="let error of errors_by_field['mac_address']">{{error.message}}</mat-error>
  <span>{{formatedMac}}</span>
</mat-form-field>

changedInput() {
  const blocks = this.model.mac_address.match(/.{1,2}/g);
  this.formatedMac = blocks.shift();
  for (const block of blocks) {
    this.formatedMac = this.formatedMac + ':' + block;
  }
}

如何自定义它以使输入中的文本随着用户键入而更改?

最佳答案

您使用了 [(ngModel)],因此您输入的所有内容都会进入 model.mac_address 以及您对 model.mac_address 所做的每个编程修改> 进入您的输入。

然后试试这个:

<mat-form-field>
  <input matInput (change)="changedInput()" placeholder="MAC address" name="mac_address" required [(ngModel)]="model.mac_address" (blur)="validate()">
  <mat-error *ngFor="let error of errors_by_field['mac_address']">{{error.message}}</mat-error>
  <span>{{model.mac_address}}</span>
</mat-form-field>

changedInput() {
  const blocks = this.model.mac_address.match(/.{1,2}/g);
  let formattedMac = blocks.shift();
  for (const block of blocks) {
    formattedMac  = formattedMac  + ':' + block;
  }
  this.model.mac_address = formattedMac;
}

关于javascript - 当用户在 Angular 6 中键入时更改输入字段文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289768/

相关文章:

Handlebar 中的 Javascript 函数调用

javascript - 使用css在某一类元素下方添加图像

javascript - RxJS 行为主题 : return current value or get a new one based on condition

javascript - 从可观察数组中获取属性值的总和

javascript - 从表单发布触发 AWS Lambda

jquery - 如何在 ionic 2 Angular 应用程序中包含 jQuery

javascript - 我们可以在 angular(2/4/5/6) 中使用多个库,因为它支持 TreeShaking 吗?在不影响性能和构建尺寸的情况下

angular - 导航到另一个页面,保持导航栏可见

jquery - 单击按钮时是否可以按 Angular 滚动到页面底部?

javascript - TypeScript 静态类