gpt4 book ai didi

javascript - Angular2/4 无法将输入字段绑定(bind)到 ngControl - 无法读取未定义的属性 'errors'

转载 作者:行者123 更新时间:2023-11-28 17:55:07 33 4
gpt4 key购买 nike

我有一个自定义验证器来检查输入字段中的空格,但我无法理解为什么输入字段对构造函数未定义。

自定义验证组件:

import {Component} from '@angular/core';
import {FormControl, FormGroup, FormBuilder} from '@angular/forms';
import {UsernameValidators} from './usernameValidators';

@Component({
selector: 'custom-validation',
template: `
<div [formGroup]="usernameGroup">
<input type="text" placeholder="Name" formControlName="username">
<div *ngIf="username.errors.cannotContainSpace"> Without spaces! </div>
</div>
`
})

export class CustomValidationFormComponent {

usernameGroup: FormGroup;

constructor(fb: FormBuilder){
this.usernameGroup = fb.group({
username: ['', UsernameValidators.cannotContainSpace],
});
}

用户名验证器:

import {FormControl} from '@angular/forms';

export class UsernameValidators {
static cannotContainSpace(control: FormControl){
if (control.value.indexOf(' ') >= 0)
return { cannotContainSpace: true };

return null;
}
}

PLUNKER

最佳答案

您的用户名 formControl 不是可以直接访问的类变量。您可以通过 FormGroup 访问它,即 userNameGroup

  <div *ngIf="usernameGroup.controls['username'].errors?.cannotContainSpace">

或者正如 Manuel Zametter 提到的:

  <div *ngIf="usernameGroup.controls.username.errors?.cannotContainSpace">

?. 是安全导航运算符,如果它是 undefinednull,它会检查错误。

Plunker

关于javascript - Angular2/4 无法将输入字段绑定(bind)到 ngControl - 无法读取未定义的属性 'errors',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629542/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com