Не удается получить доступ к этому, когда ng-keyup вызывается во второй раз - PullRequest
0 голосов
/ 06 июня 2018

Существует поле ввода, например:

<input ng-if="$ctrl.inputType === 'input'" 
    name={{$ctrl.param.Name}}
    type="text"
    ng-keyup="$ctrl.keyp()"
    ..."
/>

и функция keyp () в контроллере:

class AlertParameterCtrl {
    constructor(AlertParameterService, $element){
        this.AlertParameterService = AlertParameterService;
        this.$element = $element;
        this.overrideText = 'Override default';
        this.inputType = 'input';
        this.unitlessParameter = false;
    }
 ...
    keyp() {
        const dec = 2;
        const regex = new RegExp("(\\.\\d{" + dec + "})\\d+", "g");
        this.param.value = this.param.value.replace(regex, '$1');      
    }

}

AlertParameterCtrl.$inject = ['AlertParameterService', '$element'];

Цель состоит в том, чтобы сделать возможным ввод максимум 2 цифр последесятичная точка.

Я положил debbuger внутрь keyp(), чтобы посмотреть, как он себя ведет.Когда после десятичной запятой добавляется новая цифра, значение this.param.value остается на шаге до.

Например, если начальное значение равно 100, и я пишу 100., значение this.param.value остается 100.

После этого шага я ввожу еще одну цифру, 100.2, значение this.param.value становится 100. и т. Д.

Итак, когда есть3 цифры на входе и 2 цифры на переменную (this.param.value), я пишу еще одну, чтобы посмотреть, не остановит ли она ее в форме ввода.

Но вместо того, чтобы использовать регулярное выражение для этого, значение this.param.value не определено, и я получаю эту ошибку:

Невозможно прочитать свойство 'replace' of undefined


Кто-нибудь знает, почему возникают эти 2 проблемы?Как если бы вы были на шаге раньше и почему, когда вводится третья цифра, переменная, хранящая ее, не определена?

...