【问题标题】:angular 4 form validation for input errors输入错误的角度 4 表单验证
【发布时间】:2017-11-22 13:14:58
【问题描述】:

你好 angular 开发者...我有一个这样的表格...但是我的 ide 在这行代码显示错误 => *ngIf="userName.errors?.required && userName.touched

我什至尝试将*ngIf="useName.errors.minlength 作为官方文档,但我仍然遇到该错误并且我的代码无法正常工作。 .您可以在这张图片中看到完整的 ide 错误。 .我该如何解决?

    <form class="form-group" novalidate #f="ngForm" >
        <div>
            <label>name</label>
            <input
                    type="text"
                    class="form-control"
                    [(ngModel)]="user.name"
                    name="name"
                    #userName="ngModel"
                    minlength="2"
                    required
            >
            <div class="alert alert-danger" *ngIf="userName.errors?.required && userName.touched ">name is required

            </div>

        </div>
        <div>
            <label>email</label>
            <input
                    type="email"
                    class="form-control"
                    [(ngModel)]="user.email"
                    name="email"
                    #userEmail="ngModel"
                    required
            >
            <div class="alert alert-danger" *ngIf="userEmail.errors && (userEmail.touched || userEmail.dirty)">
                email is required
            </div>
        </div>
        <div>
            <label>phone</label>
            <input
                    type="text"
                    class="form-control"
                    [(ngModel)]="user.phone"
                    name="phone"
                    #userName="ngModel"
                    minlength="10"
            >
        </div>
        <div>
            <button type="submit" class="btn btn-success">ok</button>
        </div>
    </form>

你这是我的组件类

export class SandboxComponent {


    user = {
        name: '',
        email: '',
        phone: ''
    }}

这是我的 app.module.ts

import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import { FormsModule } from '@angular/forms'


import {AppComponent} from './app.component';
import {SandboxComponent} from './components/sandbox/sandbox.component';

@NgModule({
    declarations: [
        AppComponent,
        SandboxComponent
    ],
    imports: [
        BrowserModule,
        FormsModule
    ],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule {
}

【问题讨论】:

  • 这不起作用,因为您没有使用反应形式。您应该重新阅读有关表单的 Angular 文档,它们具有模型驱动表单和模板驱动表单,它们是完全独立的。您在输入上使用模板驱动表单,但使用模型驱动验证,这是行不通的。

标签: angular angular4-forms angular5


【解决方案1】:

我使用(并且有效)的语法是

form.hasErrors('field', ['errors'])

在你的情况下,它会是

f.hasErrors('userEmail', ['required'])

但是你需要给你的表单一个formControlName,因为现在,你没有创建一个响应式表单(或者你没有发布它)

【讨论】:

  • 因为我告诉过你,你需要使用 reactiveForms 来做到这一点。你有 reactiveForms 吗?
  • 我用过`
    名字是必需的
    ` 但输入为空后不会显示错误。 . .
  • 好吧,即使我的回答适应了您的情况,您也无法正确使用它......这就是它不起作用的原因,您没有 reactiveForms (= RF)。如果您没有 RF 属性,您将无法使用!这就像驾驶一辆不存在的汽车,没有意义:)
  • angular 如何在他们的文档中使用该代码。 . .我的意思是在文档中我们有 name.error.minlength 用于没有反应形式的字符长度验证
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多