Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度空白验证器工作错误_Angular_Validation_Angular Forms_Angular Validation - Fatal编程技术网

Angular 角度空白验证器工作错误

Angular 角度空白验证器工作错误,angular,validation,angular-forms,angular-validation,Angular,Validation,Angular Forms,Angular Validation,我不知道我做错了什么。我的whitespacer验证器工作不正常 TS: HTML: 我登录到控制台,它只是在没有插入任何内容或在开始时只插入空白时才作出反应。这并没有给我任何信息,因为我想检查是否有前导空格或结尾空格,然后显示一条错误消息。我想您希望它看起来更像这样 let isWhitespace = (control.value || '').trim().length !== (control.value || '').length; 通过这种方式,您可以检查修剪后的长度是否与未修剪的

我不知道我做错了什么。我的whitespacer验证器工作不正常

TS:

HTML:


我登录到控制台,它只是在没有插入任何内容或在开始时只插入空白时才作出反应。这并没有给我任何信息,因为我想检查是否有前导空格或结尾空格,然后显示一条错误消息。

我想您希望它看起来更像这样

let isWhitespace = (control.value || '').trim().length !== (control.value || '').length;

通过这种方式,您可以检查修剪后的长度是否与未修剪的长度相同,这将指示之前或之后是否存在空白,因为修剪函数返回的字符串开头和结尾都已修剪空白,因此如果长度不相同,则已修剪空白。

这不起作用。现在它甚至不能只识别空白。只识别空字段。抱歉,否定逻辑让我困惑了一秒钟,应该编辑为正确。如果有前导或尾随空格,则返回true;如果没有,则返回false。这应该是您想要的。可以使用regex let isWhitespace=/^\s |\s$/.testcontrol.value;这工作完美!非常感谢。我对正则表达式不太在行@彭利昌
<mat-form-field class="field-sizing">
              <input matInput required placeholder="{{ 'REGISTRATION.LASTNAME' | translate }}" name="lastname"
                formControlName="lastname" type="name"
                [ngClass]="{ 'is-invalid': g.lastname.touched && g.lastname.errors }" />
                <mat-error class="invalid-feedback"
                *ngIf="g.lastname.touched && g.lastname.errors && g.lastname.errors.whitespace">
                {{ 'REGISTRATION.LASTNAME' | translate }} 
              </mat-error>
</mat-form-field>
import { AbstractControl, ValidatorFn } from '@angular/forms';

export function NoWhitespaceValidator(): ValidatorFn {

  return (control: AbstractControl): { [key: string]: any } => {

     // messy but you get the idea
    let isWhitespace = (control.value || '').trim().length === 0;
    let isValid = !isWhitespace;
    return isValid ? null : { 'whitespace': true }

  };
}
let isWhitespace = (control.value || '').trim().length !== (control.value || '').length;