Angular 8 - 表单验证无法正常工作

标签 angular validation angular-reactive-forms maxlength formgroups

<mat-form-field class="input-label-add">
  <input matInput placeholder="Registration **" formControlName="registration">
  <mat-error *ngIf="addLockerForm.get('registration').hasError('maxlength')">registration cannot exceed 8 characters</mat-error>
  <mat-error *ngIf="addLockerForm.get('registration').errors">registration or surname is required</mat-error>
</mat-form-field> 
this.addLockerForm =  this.formBuilder.group({
    locker_serial_number: [null, Validators.required],
    customer_surname: [null],
    registration: [null, Validators.maxLength(10)],
    mobile: [null],
    email: [null],
    date_in: [null, Validators.required],
    date_out: [null, Validators.required], 
  },
  { validator: [this.validateCustomerDetails, this.validateCustomerContact] });

addLockerForm.get('registration').hasError('maxlength') 始终为 false

最佳答案

你能试试这个吗?

addLockerForm.get('registration').errors.maxlength

https://angular.io/guide/form-validation#validator-functions

编辑 1

你不需要使用.errors

请像这样更新您的代码:

<mat-form-field class="input-label-add">
  <input matInput placeholder="Registration **" formControlName="registration">
  <mat-error *ngIf="addLockerForm.get('registration').hasError('maxlength')">registration cannot exceed 8 characters</mat-error>
  <mat-error *ngIf="addLockerForm.get('registration').hasError('required')">registration or surname is required</mat-error>
</mat-form-field> 
registration: [null, [Validators.required, Validators.maxLength(8)]], 

关于Angular 8 - 表单验证无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59627527/

相关文章:

java - Struts 1.2 验证问题

angular - this.form.get 不是 Angular 4 中的函数

angular - 验证不会传播到 Angular 中的自定义表单控件 ng-select

angular - 获取 json 格式的列表项,而不是 xml/atom

javascript - 错误TS2339 : Property 'default' does not exist on type 'Special[]'

javascript - Angular 2 在渲染元素后调用 jQuery - 在使用 API 之后

css - 制作一个按钮样式的 Angular 组件( Angular Material )

ruby-on-rails - 验证电子邮件时异常(exception)

php - PDO PHP 字符串输入以数字 ("2abcd"开始)在 $stmt->bindParam ("2", $id) 中被修剪为只有数字 (':id' );

angular - 当输入的类型为 Number 时,ValueChanges 在 blur 上触发