【Angular】--- If ngModel is used within a form tag, either
【前言】:在最近的项目中,对angular的学习也才算是开始入门。对于angular小白的我来说,每次遇到问题都是很好的成长机会,哪怕很小,(#^.^#)。不断的在错误中成长吧。 【错误】:
ERROR Error: If ngModel is used within a form tag,either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions. Example 1: <input [(ngModel)]="person.firstName" name="first"> Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}"> 【分析】:要能有很好的耐心看错误提示很重要,每一个错误的解决方案也往往就在错误提示中隐藏甚至是“暴露”着。O(∩_∩)O哈哈~ 上面的异常信息告诉我们如果再表单标签中使用ngModel,则必须设置name属性,或者在ngModelOptions中必须将表单控件定义为“standalone”。 【理论】:angular2的表单主要用到了ngForm,ngModel,ngSubmit。ngSubmit对应的函数是我们提交表单调用的函数。angular2通过ngForm将按钮的禁用/启用状态和表单的有效性关联起。 【实战】:
<div class="modal-body"> <form role="form" class="form-horizontal" #validationForm1="ngForm"> <div class="form-group"> <div class="col-sm-6 form-inline"> <label class="control-label">姓名:</label> <label> <input type="text" id="familyMemName" class="form-control" [(ngModel)]="homeInfo.familyMemName" name="familyMemName" ngModel #familyMemName="ngModel" required> </label> </div> <div class="col-sm-6 form-inline"> <label class="control-label">关系:</label> <label> <select class="form-control sel-width" [(ngModel)]="homeInfo.relationshipId" name="relationshipId" required> <option *ngFor="let option of relationOptions" [value]="option.id">{{option.dictName}}</option> </select> </label> </div> </div> …… </div> </form> </div> <div class="modal-footer"> <!-- [disabled]="!addform.form.valid" --> <button type="button" class="btn btn-primary" [disabled]="!validationForm1.form.valid" (click)="add(addModal)"> 添加 </button> <button type="button" class="btn btn-default" (click)="close(addModal)"> 取消 </button> </div> 【总结】:validationForm1.form.valid用来判断form表单中的控件是否全部有效。在ng2表单中使用ngModel必须带name属性或者使用[ngModelOptions]=”{standalone: true}”。否则会报上面的错误。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |