2013-09-27 50 views
4

我有一个窗体。父窗体中的angular.js ng-form子窗体验证错误

<form class="form-horizontal" name="canForm" ng-submit="stepSubmit()" novalidate> 

它被称为“canForm”,如上所述。

在这种形式..我需要一个重复块的子表单。

我定义与上述 “canForm” 内这种形式

<div ng-form="licencesForm"> 

当我提交我的重复块licencesForm我确保我在控制器中设置form.$setPristine()

但是,当我提交主要canForm时,此表单将在我的子表单中的required字段中提取,并且表示主窗体无效。

我无法理解这一点。 ng-form指令应该是一个独立的范围,并且父表单不应该接受这个子表单中字段的验证要求吗?

如果子窗体是有效的,主窗体也应该是有效的吗?


http://plnkr.co/edit/gkbJNAV95MQ9SGLeMvlg?p=preview

当您在窗体添加的东西它设置形式$ setPristine()和子窗体是有效的,但点击提交的主要形式表示形式是无效的,即使子窗体已验证?

回答

7

如果有一个父窗体和子窗体,然后父窗体将只有当所有子窗体都有效有效..

<form class="form-horizontal" name="canForm" ng-submit="stepSubmit()" novalidate> 

,有一个子窗体

<div ng-form="licencesForm"> 

然后canForm会只有当所有的licencesForm都有效时才有效。

+4

看到这个http://plnkr.co/edit/gkbJNAV95MQ9SGLeMvlg?p=preview。我将子窗体设置为$ setPristine(),它将licencesForm设置为有效 – markstewie

+1

@markstewie您的plnkr代码非常有用。如果你可以在这里发布代码,这将是非常好的,作为问题的答案。 –