这是一个典型的 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/