После моего предыдущего вопроса моя цель - показать точное пользовательское сообщение об ошибке для ввода, поэтому вместо того, чтобы продвигать пользователя с помощью общей версии сообщения c, я хотел бы продвинуть его с помощью более конкретное c сообщение.
Например, если это числовое поле, и пользователю разрешено вводить цифры только в диапазоне от 30 до 40, поэтому, если пользователь ввел 41, чем вместо просто рекламировать его с помощью "Недействительный номер" Я хотел бы рекламировать его с помощью "Вы ввели слишком большое число" , и если он ввел 29, чем я хотел бы рекламировать его «Вы ввели малое число» .
Используя реактивный подход, я попытался сделать следующее:
app.component.html
:
<form [formGroup]="myForm">
FooNumber: <input type="text" formControlName="fooNumber">
<span *ngIf="!myForm.get('fooNumber').valid">Not valid number, please provide different value</span>
</form>
app.component.ts:
export class AppComponent implements OnInit {
myForm: FormGroup;
max = 40;
min = 30;
ngOnInit() {
this.myForm = new FormGroup({
'fooNumber': new FormControl(null, [this.validateFunction.bind(this)])
});
}
validateFunction(control: FormControl): {[s: string]: boolean} {
if (control.value > this.max || control.value < this.min)
return {'notValidFooNumber': true};
return null;
}
}