Angular2:如何在放入数据模型之前修改Form Control的输入值

时间:2017-05-11 09:22:59

标签: angular

我有一个表单模型:

form = new FormGroup({currency: new FormControl('')})

在控件中输入值启用了屏蔽字符:

$ 123, 456

现在如何让form.value返回{ currency: 123456 }

我试过了this.form.controls['currency'].setValue(123456)但是没有用。

1 个答案:

答案 0 :(得分:-1)

你可以使用指令ngModel。$ parsers.push和ngModel。$ formatters.push

'use strict'
// Directive to show the browser sepcific decimal separator for Numeric 
controls.
angularPracticeApp.directive('apNumberInput', function () {
return {
    restrict: 'A',
    require: '^ngModel',
    scope: {},
    link: function (scope, element, attr, ngModel) {

        // Runs when the value change from UI.
        ngModel.$parsers.push(function (value) {
            if (value && typeof (value) === "string")
                return value.replace(',', '.');
            else
                return value;
        });

        // Runs when the value change from code.
        ngModel.$formatters.push(function (value) {
            if (value && typeof (value) === "string")
                return value.replace('.', ',');
            else
                return value;
        });
    }
}
});