angular - 是否可以在 Angular 中同时将输入绑定(bind)到两个变量?

标签 angular angular-material

这是一个典型的 Angular 的 Material matInput:

<input matInput [(ngModel)]="model.property" name="property" />

现在要在模型更改时应用逻辑,其他开发人员在 SO 中提出的一个常见解决方案是将 banana-in-the-box 分解为 property-binder事件 Hook 表达式:

<input matInput [ngModel]="model.property" (ngModelChange)="model.property=someLogic($event)" />

基于这个逻辑,我创建了一个 digitGroup 函数,它获取输入数字,在每三个数字之间放置逗号,并在 matInput 字段中显示。

但是,问题是现在 model.property 是一个表示数字分组数字的字符串,而不是一个真正的 JavaScript 数字,所以在每个地方我都需要访问它的值和对其进行一些数学运算,我需要先 undigitGroup(model.property)

是否可以同时将 matInput 绑定(bind)到 model 的两个属性?这样我就可以让 model.property 用于计算,同时让 model.digitGroupedProperty 显示给用户。

最佳答案

您可以使用 pipes在不改变模型的情况下显示由 digitGroup 函数转换的模型。

@Pipe({name: 'groupDigits'})
export class DigitGroupPipe implements PipeTransform {
  transform(value: any) {
      // Call your digitGroup() function here, then return result
  }
}

然后像这样使用它们:

<input matInput [ngModel]="model.property | groupDigits" (ngModelChange)="model.property=$event" />

这样,您的 model 将不会被您的 digitGroup() 函数改变,只会在 View 上改变

关于angular - 是否可以在 Angular 中同时将输入绑定(bind)到两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50443977/

相关文章:

javascript - 取消订阅 Firestore 流 - Angular

angular - 如何在 Angular Interpolation Tag 中使用字符串函数

node.js - 在 node.js(和 Angular 2)上使用 systemjs

Angular Material mat-paginator 导航被禁用

html - Angular 应用程序 - 在哪里放置脚本标签

javascript - 通过共享服务在两个组件之间进行 Angular 2/4 通信

angularjs - Angular Material : Change size of virtual repeat container and trigger layout

angular - 如何禁用 mat-tab-group mat-ink-bar 动画

angular - 为什么 Angular Material 工具提示会破坏我的单元测试?

angular - 在 Nrwl Nx 库中导入 Angular Material 主题