Angular 2 - 在将输入存储到模型之前转换输入的指令(例如显示 1 但存储 1000)

Angular 2 - Directive to transform input before storing it in the model (e.g. show 1 but store 1000)

我正在尝试编写一个显示值的指令 除了底层的 ngModel。

例如:用户在输入字段中输入并看到 1,但模型存储 1000。

有没有办法在 displaying/writing 之前转换一个值?

编辑:

在 angular 1 中有 ngModelCtrl.$formatters.push(function() {...});ngModelCtrl.$parsers.push(function() {...});。基本上是一种以两种方式添加转换的方法。

我会制定一个指令来实现这一点,

工作演示:https://plnkr.co/edit/Uf5BmI2r4RqufFB568x2?p=preview

<input type="text"  [(ngModel)]="model"> 


import { Directive, ElementRef, Renderer,Input,Output,EventEmitter } from '@angular/core';

@Directive({ selector: '[ngModel]' })

export class directive {
  @Input() ngModel;
  ngOnChanges(val:SimpleChanges){

    if(val['ngModel'].currentValue!=undefined)
    console.log(+val['ngModel'].currentValue*1000);
  }
}

我找到了一个方法:

<input [ngModel]="(x * 1000)" (change)="x = ($event.target.value / 1000)"

这样,如果模型值为 1,用户看到的值为 1000。更改时,模型值将相应更新。