Angular 自定义验证在角度模式下不起作用

Angular 自定义验证在角度模式下不起作用,angular,Angular,我已将自定义验证定义为: static cannotContainSpace(control:AbstractControl):ValidationErrors | null{ if((control.value as string).indexOf('') >=0 ) return{cannotContainSpace :true}; return null; } 在我的组件中,我使用以下代码: <inpu

我已将自定义验证定义为:

static cannotContainSpace(control:AbstractControl):ValidationErrors | null{

        if((control.value as string).indexOf('') >=0 )
                return{cannotContainSpace :true};
        return null;
    }
在我的组件中,我使用以下代码:

<input formControlName="username"id="username" type="text" class="form-control">
    <div *ngIf="form.get('username').touched && form.get('username').errors?.required"class="alert alert-danger">username required</div>

    <div *ngIf="form.get('username').errors?.minlength" class="alert alert-danger">username should be of minimum 3 characters.</div>
    <div *ngIf="form.get('username').errors.cannotContainSpace" class="alert alert-danger">There can be no spaces in Username.</div>
</div>

需要用户名
用户名至少应包含3个字符。
用户名中不能有空格。
我的问题是,尽管在customValidation中使用了ngIf,但div标记或相应的错误消息仍会显示,即使是非空格文本,或是页面刚加载时。
有什么建议吗?

if(/\s/.test(control.value)){//它有任何类型的空格}检查表单conrol是否为脏的第一个表单。get('username')。dirty&&form.get('username')。errors.cannotContainSpace