角度材料通过外部事件验证形式



我有一个多部分的表单,我希望有一个外部的下一个/上一个导航。但是,我需要能够在导航到下一个时验证表单的每个部分。

我有以下示例表单定义:

<form layout="column" name="nProfileForm1">
    <md-input-container>
        <label>City</label>
        <input ng-model="profile.city" required="" name="nCity">
        <div ng-messages="nProfileForm1.nCity.$error"  ng-if="nProfileForm1.nCity.$touched&&!nProfileForm1.nCity.$valid">
            <div ng-message="required">City is required.</div>
        </div>
    </md-input-container>
</form>

如果与字段交互,则验证正在查找并正确显示错误文本。但是,如果发生外部事件,我想不出触发所有表单字段验证的方法。将自己的提交按钮添加到每个表单部分似乎有些错误。我正在寻找的是类似于模式形式的作用:

$scope.$broadcast('schemaFormValidate')

任何想法将不胜感激。

本质上,在下面的示例中,我希望字段在按下一步后以红色亮起:http://codepen.io/Vladimir_M/pen/OWEjOd

更新

:更新了代码笔以包含我找到的一个解决方案。

经过一些尝试,我找到了一种方法,可以用最少的代码实现我所追求的效果。获取窗体的范围并将窗体的 $submitted 属性设置为 true 可以解决问题。它评估整个表单。

 $scope.doSubmit = function(){
    var formScope = angular.element(nProfileForm1).scope();
    formScope.nProfileForm1.$submitted = true;
  }

随意提出更好的方法。