angular2模板驱动的表单验证问题

     2023-02-24     280

关键词:

【中文标题】angular2模板驱动的表单验证问题【英文标题】:angular2 template driven form validation issue 【发布时间】:2018-03-01 03:32:05 【问题描述】:

我对 angular2 模板驱动的表单验证有问题,以下是我的表单的代码。

  <h1>page_title</h1>
  <div *ngIf="success_flag" class="alert alert-success">
        success_message.message
  </div>
  <form  #add_book_form="ngForm"  (ngSubmit)="add_book(add_book_form)" novalidate>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>Book Name</label>
                                            <input name="book_name" id="book_name" [(ngModel)]="book_name" class="form-control" required>
                                            <div *ngIf="book_name.invalid && (book_name.dirty || book_name.touched)" class="alert alert-danger">
                                                              <div *ngIf="book_name.errors.required">
                                                              Book Name is required.
                                                              </div>


                                                              </div>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>Book Description</label>
                                            <textarea name="book_description" [(ngModel)]="book_description" class="form-control" required></textarea>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>Book Published Date</label>
                                            <input name="book_published_date" [(ngModel)]="book_published_date" class="form-control"  required>
                                      </div>
                                </div>
              </div>      
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>Cover Image</label>
                                            <input name="book_cover_image" [(ngModel)]="book_cover_image" class="form-control" type="file" (change)="getFiles($event,'cover_image')" required>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>PDF Copy</label>
                                            <input name="book_pdf_copy" [(ngModel)]="book_pdf_copy" class="form-control" type="file" (change)="getFiles($event,'pdf_copy')" required>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>PDF Sample</label>
                                            <input name="book_pdf_sample" [(ngModel)]="book_pdf_sample" class="form-control" type="file" (change)="getFiles($event,'pdf_sample')" required>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix">
                                            <label>Price</label>
                                            <input name="book_price" [(ngModel)]="book_price" class="form-control" type="number" required>
                                      </div>
                                </div>
              </div>
              <div class="row">
                          <div class="col-sm-12 col-md-12 col-lg-12 col-xs-12">
                                      <div class="form-group clearfix  text-center">
                                            <button [disabled]="add_book_form.invalid" class="btn btn-success">Save Book</button>
                                      </div>
                                </div>
              </div>      
        </form>

目前提交按钮被禁用。当我尝试填写书名字段时,它必须被启用,但它仍然无法正常工作,我不知道究竟存在哪里问题。错误消息也没有显示。

请帮忙。 谢谢

【问题讨论】:

这可能不相关但是,你为什么在这里使用 novalidate? 但你的条件是只有在整个表单有效的情况下才启用按钮。 【参考方案1】:

@DBQ 是对的。

而不是使用:

<button [disabled]="add_book_form.invalid" class="btn btn-success">Save Book</button>

你应该使用:

<button [disabled]="add_book_form.controls['book_name'].invalid" class="btn btn-success">Save Book</button>

【讨论】:

Angular2嵌套模板驱动表单

】Angular2嵌套模板驱动表单【英文标题】:Angular2nestedtemplatedrivenform【发布时间】:2017-01-0714:35:25【问题描述】:这简直是疯了,看起来没有办法让其中一个输入位于子组件中的表单。我已经阅读了所有的博客和教程以及所有内... 查看详情

Angular2 模板驱动的异步验证器

】Angular2模板驱动的异步验证器【英文标题】:Angular2templatedrivenasyncvalidator【发布时间】:2016-07-1402:59:42【问题描述】:我在以模板驱动形式定义异步验证器时遇到问题。目前我有这个输入:<inputtype="text"ngControl="email"[(ngModel)]=... 查看详情

Angular 2.0 中的模型驱动表单验证问题

】Angular2.0中的模型驱动表单验证问题【英文标题】:ModeldrivenformvalidationissueinAngular2.0【发布时间】:2017-09-1700:10:49【问题描述】:在Angular2.0中,我有使用FormBuilder的模型驱动表单,ngOnInit()this.user=this.fb.group(id:[\'\',[Validators.require... 查看详情

模板驱动表单中的表单验证问题

】模板驱动表单中的表单验证问题【英文标题】:Problemwithformvalidationintemplatedrivenform【发布时间】:2019-04-1612:03:09【问题描述】:我正在使用Angular6开发一个Web应用程序。我想创建一些受HTML输入组件启发的自定义组件。例如:Cus... 查看详情

angular2+折腾记:初步了解表单:模板驱动及数据驱动及脱坑要点

前言表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式。首先需要操作表单的模块引入这两个模块;import{FormsModule,ReactiveFormsModule}from‘@angular/forms‘;表单控件响应的几种状态模板驱动表单依赖FormsModule,数据... 查看详情

验证模板表单中的复选框列表(不是反应式表单)Angular 2

】验证模板表单中的复选框列表(不是反应式表单)Angular2【英文标题】:ValidationofCheckboxlistinTemplateform(notReactiveforms)Angular2【发布时间】:2018-01-2320:25:15【问题描述】:如何验证是否从Angular2模板表单中的复选框列表中选择了至... 查看详情

带有 ngFor 输入的 Angular 2 模板驱动表单

】带有ngFor输入的Angular2模板驱动表单【英文标题】:Angular2templatedrivenformwithngForinputs【发布时间】:2017-01-2915:48:06【问题描述】:是否可以在模板驱动的表单中使用ngFor创建输入字段,并使用#name="ngModel"之类的东西来在另一个标... 查看详情

异步验证器不适用于 Angular 中的模板驱动表单

】异步验证器不适用于Angular中的模板驱动表单【英文标题】:AsyncValidatornotworkingwithTemplatedrivenFormsinAngular【发布时间】:2017-10-1801:31:52【问题描述】:我为我的模板驱动表单创建了一个异步验证器。importDirective,forwardReffrom"@angular... 查看详情

如何在模板驱动的表单中为 ngModelGroup 添加自定义验证

】如何在模板驱动的表单中为ngModelGroup添加自定义验证【英文标题】:HowtoaddcustomvalidationforngModelGroupinTemplatedrivenforms【发布时间】:2019-02-1502:19:15【问题描述】:我正在使用模板驱动的表单方法。我想在ngModelGroup上添加自定义验... 查看详情

Angular 2中的模板驱动形式和反应形式有啥区别

】Angular2中的模板驱动形式和反应形式有啥区别【英文标题】:Whatarethedifferencesbetweentemplatedrivenformsandreactiveformsinangular2Angular2中的模板驱动形式和反应形式有什么区别【发布时间】:2017-12-2920:03:27【问题描述】:在Angular2中,模... 查看详情

Angular - 模板驱动的表单 - 控制器中的自定义验证器功能

】Angular-模板驱动的表单-控制器中的自定义验证器功能【英文标题】:Angular-Templatedrivenforms-customvalidatorfunctioninthecontroller【发布时间】:2019-03-2306:30:29【问题描述】:由于在ngModel中使用响应式表单是deprecatedinAngular6,并且我的项... 查看详情

表单提交后Angular 2显示验证错误

】表单提交后Angular2显示验证错误【英文标题】:Angular2displayvalidationerrorsafterformsubmit【发布时间】:2016-03-1011:26:09【问题描述】:我正在构建一个模型驱动的Angular2表单。我发现的大多数示例都会禁用提交按钮,直到表单有效。... 查看详情

angular自定义验证器添加入模板驱动表单

创建自定义验证器的命令nggeneratedirectiveforbidden-name(自定义床啊金验证器的名称)生成的文件内容import{Directive}from'@angular/core';@Directive({selector:'[appForbiddenName]'})exportclassForbiddenNameDirective{const 查看详情

angular2中的表格

】angular2中的表格【英文标题】:FormsInangular2【发布时间】:2016-03-2420:00:58【问题描述】:对如何在angular2beta中使用表单(模板或模态驱动)有点困惑。目前我正在使用模态驱动的表单,但我的form.html出现了一些错误:<form[ngFo... 查看详情

Angular 2阻止输入以模板驱动的形式提交

】Angular2阻止输入以模板驱动的形式提交【英文标题】:Angular2prevententerfromsubmittingintemplate-drivenform【发布时间】:2017-03-3122:16:14【问题描述】:我有使用模板驱动蓝图的表单,所以是这样的:<form#myForm="ngForm"ngSubmit="save(myForm.va... 查看详情

带有预填充数据的 Angular2 表单验证

】带有预填充数据的Angular2表单验证【英文标题】:Angular2Form-validationwithprefilleddata【发布时间】:2017-05-2107:02:44【问题描述】:我有一个带有两个输入字段(文本)的表单。从头开始创建(=没有信息)效果很好。如您所料,也... 查看详情

angular2表单验证器中的验证描述

】angular2表单验证器中的验证描述【英文标题】:Validationdescriptioninangular2formsvalidators【发布时间】:2016-05-0617:36:15【问题描述】:翻看我看到的angular2apiControl类minLength(minLength:number):Function我了解该功能的作用。我想知道是否无法... 查看详情

angular2表单验证本机警报[重复]

】angular2表单验证本机警报[重复]【英文标题】:angular2formvalidationnativealret[duplicate]【发布时间】:2017-10-2700:45:15【问题描述】:我使用formBuilder制作了formGroup和formControl。下面的代码是我的代码的一部分。companyPhoneFormGroup:fb.group(c... 查看详情