我有多个子ng格式,它们是父格式的一部分,我想设置所有子格式的$ submit状态,当我将父格式设置为$ submit状态时。
截至目前,表单控制器上没有此类方法,请选中here
可以说,如果我想扩展当前的表单控制器来执行此操作,我应该怎么做?如何添加新方法$setChildFormsToSubmittedState()
?当然我想在不打扰/触摸角度代码的情况下这样做。
有可能吗?我认为应该使用$addControl();
将所有子表单挂钩到父表单中。
不知道从哪里开始。
答案 0 :(得分:4)
您可以创建一个将功能附加到表单控制器的指令。只需创建一个迭代所有控件的方法,方法是检查一个项是否具有等于它所属的表单对象的$$parentForm
属性。
<强> DEMO 强>
<强>的Javascript 强>
.directive('myForm', function() {
return {
require: 'form',
link: function(scope, elem, attr, form) {
form.__setSubmitted = function() {
setSubmitted(form);
};
function setSubmitted(form) {
form.$submitted = true;
angular.forEach(form, function(item) {
if(item && item.$$parentForm === form) {
setSubmitted(item);
}
});
}
}
};
});
<强> HTML 强>
<form name="myForm" my-form ng-submit="myForm.__setSubmitted()">
<ng-form name="mySubForm1">
<input type="text" ng-model="data.something1" name="something">
{{mySubForm1.$submitted}}
</ng-form>
<br>
<ng-form name="mySubForm2">
<input type="text" ng-model="data.something2" name="something">
{{mySubForm2.$submitted}}
</ng-form>
<br>
<button type="submit">Button</button>
{{myForm.$submitted}}
</form>