html - Angular 2 表单验证错误 "Unhandled Promise rejection: Cannot assign to a reference or variable!"

标签 html forms validation angular

App.component.html

<div class="container">
  <h2>Form Validation</h2>
  <form>
<div class="form-group">
  <label for="prettyName">Name</label>
  <input type="text" class="form-control" id="prettyName" required minlength="4" maxlength="20" [(ngModel)]="prettyName" name="prettyName" #name="ngModel">
  <div *ngIf="name.errors && (name.dirty || name.touched)" class="alert alert-danger">
    <div [hidden]="!name.errors.required">
      Name is required
    </div>
    <div [hidden]="!name.errors.minlength">
      Name must be at least 4 characters long
    </div>
    <div [hidden]="!name.errors.maxlength">
      Name cannot be more than 20 characters long
    </div>
  </div>
</div>
    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>
// ... (Same things for username, email and password)

App.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
 prettyName: string;
  username: string;
  email: string;
  password: string;
}

我遵循了关于表单验证的官方文档:https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#template1

请问有人知道这个错误是从哪里来的吗?

干杯

最佳答案

您应该更改组件变量或模板 #name 变量。他们正在碰撞:

export class AppComponent {
  prettyname: string; // here
  username: string;
  email: string;
  password: string;
}

同时将 String 更改为 string

<form>
  <div class="form-group">
    <label for="prettyName">Name</label>
    <input type="text" class="form-control" id="prettyName" required minlength="4" maxlength="20" [(ngModel)]="prettyName" name="prettyName" #name="ngModel">
    <div *ngIf="name.errors && (name.dirty || name.touched)" class="alert alert-danger">
      <div [hidden]="!name.errors.required">
        Name is required
      </div>
      <div [hidden]="!name.errors.minlength">
        Name must be at least 4 characters long
      </div>
      <div [hidden]="!name.errors.maxlength">
        Name cannot be more than 20 characters long
      </div>
    </div>
  </div>
<button type="submit" class="btn btn-default">Submit</button>

关于html - Angular 2 表单验证错误 "Unhandled Promise rejection: Cannot assign to a reference or variable!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437822/

相关文章:

html - 在另一个模态上 Bootstrap 模态

php - 如何链接到数据库页面

javascript - 尝试将用户定向到新的 HTML 页面时出现问题 Python Bottle

javascript - 我的 html 表单不响应 js 验证并且需要 html

javascript - 调用没有函数的javascript?

asp.net - 验证文本框可接受 3 到 1440 之间的整数或 "Default"字

html - 在 UL > LI > A 中增加填充的循环更少

javascript - 遍历复选框并有条件地禁用未选中的

javascript - 返回 javascript 函数的 true/false 值,然后根据它做一些事情

ruby - 是否可以结合 with_options 和 :if for conditional validations?