Угловой 2 входной яркости мин вариа - PullRequest
0 голосов
/ 11 декабря 2018

Итак, у меня есть эта проблема:

<form [formGroup]="myForm" >  
<input autocomplete="off" type="text" name="number" formControlName="number" min="{{ FinalPaymentPrice}}"/> // This FinalPaymentPrice is a number which I get and whant to set. For example 2 and then 14 and so on
</form>

На основе этого номера FinalPaymentPrice, например: 4 пользователю не разрешено вводить 3 или меньше, но разрешено вводить 5 и более.И валидатор для этого:

export class PaymentComponent {
    myForm = new FormGroup({
        'number': new FormControl(null, [
            Validators.required
        ])
    });

Дело в том, что мой минимальный ввод является вариативным.Идея в том, что вы получаете какую-то цену, и вы не можете ввести меньше, только более высокую ценуПоэтому, если мне нравится, что эта функция работает, но это неправильно.

export class PaymentComponent {
    myForm = new FormGroup({
        'number': new FormControl(null, [
            Validators.required,
            Validators.min(2)
        ])
    });

Я очень плохо знаком с Angular

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Это нормально работает HTML:

<code><form [formGroup]="myForm">
    <input autocomplete="off" type="text" name="number" formControlName="number"/>
    <pre>{{myForm.status | json}}

ts:

this.myForm = new FormGroup({
      number: new FormControl(null, [
        Validators.required,
        Validators.minLength(2)
      ])
    });
0 голосов
/ 11 декабря 2018

Если я правильно понимаю вашу проблему, в вашем случае минимальное значение ввода должно быть 2.

В этом случае вы должны сделать тип ввода как число вместо текст .

, т. е. <input type="number" /> вместо <input type="text" />

0 голосов
/ 11 декабря 2018

Вы можете обновить валидаторы для любого события следующим образом:

this.myForm.controls['number'].setValidators([Validators.required, Validators.min(this.x)]);
this.myForm.get('number').updateValueAndValidity();

И this.x может изменяться по вашему желанию, но событие должно обновлятьвалидаторы вашего контроля каждый раз, когда ваши x меняются

Вы можете чистить валидаторы таким образом

this.myForm.get('number').clearValidators();
this.myForm.get('number').updateValueAndValidity();

Пример

Здесьпример статического изменения валидатора: https://stackblitz.com/edit/angular-ate6tg

Но вы можете варьировать валидатор минимального значения более динамически (например, с подпиской)

Удачное кодирование!

...