我在Typescript中做了一個實用方法,以更全面的方式處理這個問題。對於任何深度的錯誤,這都可以$ setDirty。我知道你問的是你的問題中的特定領域,但對於某些你可能正在解決的問題,這可能是一個更有用的工具。
class AngularFormUtil
{
static RecursiveSetDirty(form: ng.IFormController)
{
form.$setDirty();
for (let errorProp in form.$error)
{
if (!form.$error.hasOwnProperty(errorProp))
return;
for (let error of form.$error[errorProp])
{
if (error.$setDirty) {
AngularFormUtil.RecursiveSetDirty(error);
}
}
}
}
}
只要插上形式:
AngularFormUtil.RecursiveSetDirty($scope.parentForm);
平原JS編譯版本:
var AngularFormUtil = (function() {
function AngularFormUtil() {
}
AngularFormUtil.RecursiveSetDirty = function (form) {
form.$setDirty();
for (var errorProp in form.$error) {
if (!form.$error.hasOwnProperty(errorProp))
return;
for (var _i = 0, _a = form.$error[errorProp]; _i < _a.length; _i++) {
var error = _a[_i];
if (error.$setDirty) {
AngularFormUtil.RecursiveSetDirty(error);
}
}
}
};
return AngularFormUtil;
}());
我找不到$使用setDirty方法的。任何想法爲什麼? –
確保您嘗試調用$ setDirty()的元素是實際的表單元素(輸入,選擇等) –