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