При отправке выполняется отлично, даже если вылезают ошибки
У меня есть форма с минимумом символов и максимумом, проблема в том, что если минимум 2 символа, и я поставил один, я получаю mat-error, но при сохранении он позволяет вам сохранить его только с одним символом.
<mat-form-field>
<input matInput #input1 maxlength="300" minlength="2"
placeholder="Nombre"
formControlName="name">
<mat-hint align="end">{{input1.value?.length || 0}}/300</mat-hint>
<mat-error>
Minimo 2 caracteres máximo 300
</mat-error>
</mat-form-field>
Кнопка сохранения:
<button class="mat-raised-button mat-primary" (click)="save()">Save</button>
Функция сохранения:
save() {
this.dialogRef.close(this.form.value);
}
2 ответа
Решение
Использовать форму отправки
<form [formGroup]="form" (ngSubmit)="save()" class="example-form">
<mat-form-field>
<input matInput #input1 maxlength="300" minlength="2"
placeholder="Nombre"
formControlName="name">
<mat-hint align="end">{{input1.value?.length || 0}}/300</mat-hint>
<mat-error>
Minimo 2 caracteres máximo 300
</mat-error>
</mat-form-field>
<button type="submit"> save</button>
В component.ts
save(){
if(this.form.valid){
console.log('saved')
}
else{
console.log('invalid form')
}
}
пример stackblitz
Проверка должна осуществляться в форме контроля. Вы должны удалить из HTMLmaxlength="300" minlength="2"
и установите проверку формы в группе форм, например:
.ts
formGroup = new FormGroup({
name: new FormControl('', [Validators.maxLength(300), Validators.minLength(2), Validators.required])
});
.html
<form (ngSubmit)="onSubmit()" [formGroup]="formGroup">
<mat-form-field>
<input matInput #input1 placeholder="Nombre" formControlName="name">
<mat-hint align="end">{{input1.value?.length || 0}}/300</mat-hint>
<mat-error>
Minimo 2 caracteres máximo 300
</mat-error>
</mat-form-field>
<button type="submit" [disabled]="!formGroup.valid">Save</button>
</form>