Можно ли передавать динамические значения в специальный валидатор форм в Angular 6? - PullRequest
0 голосов
/ 18 сентября 2018

в основном, у меня есть некоторые входные данные формы, проверки которых зависят друг от друга (то есть, если вы вводите временной диапазон, время «с» должно быть меньше времени «до»), но я не совсемконечно, как это сделать.

Вот моя группа форм:

this.form = this.fb.group({
  fromTime: ["", [Validators.required, CustomValidator.myValidationFunction(this.form.get("toTime").value)]],
  toTime: ["", [Validators.required]]
});

И вот мой валидатор до сих пор:

static myValidationFunction(testing) {
    const toTime = testing; // only comes here 1 time
    return control => {
      return toTime /*this value never changes*/  ? null : { test: {} };
    };
  }

но похоже, чтозначение x или toTime устанавливается только в первый раз при создании валидатора.Есть ли способ передать динамические входы в пользовательский валидатор?

Я довольно плохо знаком с angular, но прочитал документы по проверке пользовательской формы , но не могу найти мой ответ

1 Ответ

0 голосов
/ 18 сентября 2018
static TimeValidator(formGroup) {
    const fromTime = formGroup.controls.fromTime;
    const toTime = formGroup.controls.toTime;

    if (fromTime.value && toTime.value) {
        if (toTime.value <= fromTime.value) {
            return {time: true};
        }

    }
    return null;
}

ngOnInit(): void {
    this.form = new FormGroup({
        fromTime: new FormControl('', Validators.required),
        toTime: new FormControl('', Validators.required)
    }, AppComponent.TimeValidator);

    this.form.controls.fromTime.setValue(2);
    this.form.controls.toTime.setValue(1);
}

и в html вы можете проверить:

{{form.hasError('time')}}

Не стесняйтесь спрашивать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...