2013-09-27 86 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代碼非常有用。如果你可以在這裏發佈代碼,這將是非常好的,作爲問題的答案。 –