繁体   English   中英

Angular2 / 4无法将输入字段绑定到ngControl-无法读取未定义的属性“错误”

[英]Angular2/4 Cannot bind input field to ngControl - Cannot read property 'errors' of undefined

我有一个自定义的Validator来检查输入字段中的空格,但是我不明白为什么输入字段没有被构造函数定义。

CustomValidationComponent:

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],
    });
  }

UsernameValidator:

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

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

        return null;
  }
}

朋克

您的username formControl不是可直接访问的类变量。 您可以通过FormGroup来访问它,它是userNameGroup

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

或正如Manuel Zametter所提到的:

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

?. 是安全的导航运算符,它会检查错误(如果undefined或为null

柱塞

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM