Javascript 使用格式化程序更改viewvalue时保留modelvalue

Javascript 使用格式化程序更改viewvalue时保留modelvalue,javascript,angularjs,angular,angular-ngmodel,Javascript,Angularjs,Angular,Angular Ngmodel,我有一个文本框,希望在用户键入时将用户输入显示为*,并将输入保存为普通示例123456789->***\u***\ u*** 给定如下输入字段: <input class="form-control" type="text" name="secretNumber" ng-model="vm.report.fields.secretNumber" hr-secret-number/> module app.directives { 'use strict'; c

我有一个文本框,希望在用户键入时将用户输入显示为*,并将输入保存为普通示例<代码>123456789->***\u***\ u***

给定如下输入字段:

<input class="form-control" type="text"  name="secretNumber" 
ng-model="vm.report.fields.secretNumber" hr-secret-number/>
module app.directives {
    'use strict';

    class SecretNumber implements ng.IDirective {
        require = 'ngModel';
        restrict = 'A';

        formatSsn = (secret: string): string  => {
            return secret.replace(/[0-9]/g, '*');
        };

        link = ($scope, $element, $attrs, $ngModel: ng.INgModelController) => {
            var onModelChanged = () => {
                $ngModel.$setViewValue(this.formatSsn($ngModel.$modelValue));
                $ngModel.$render();
                console.log($ngModel);
            };

            $ngModel.$viewChangeListeners.push(onModelChanged);

            $ngModel.$formatters.push((value) => {
                return this.formatSsn($ngModel.$modelValue);
            });

            if (!$attrs['hrAllowRegex'] || !$attrs['maxlength'] || !$attrs['ngMinlength']) {
                $attrs.$set('hr-allow-regex', '[0-9]');
                $attrs.$set('maxlength', 14);
                $attrs.$set('ngMinlength', 14);
            }
        };


        static factory():ng.IDirectiveFactory {
            var directiveFactory:ng.IDirectiveFactory = () => new SecretNumber();

            return directiveFactory;
        };
    }

    angular.module('app').directive('hrSecretNumber', SecretNumber.factory());
}
如何在修改viewvalue时保留modelvalue,以便在文本框中显示****而在数据库中保存为1234(例如)

console.log的结果如下所示

NgModelController {$viewValue: "****", $modelValue: "****", $$rawModelValue: "****", $validators: Object, $asyncValidators: Object…}
而不是

NgModelController {$viewValue: "****", $modelValue: "1234", $$rawModelValue: "1234", $validators: Object, $asyncValidators: Object…}