需要来自指令字段类型的字段

Require fields from a directive field type

参考这个例子:http://jsbin.com/cenugiziju/edit?html,js,output

我创建了一个指令:example-directive 这个指令由一个 templateUrl 组成,它有一个标签和一个在这个 html 文件中的输入。此字段在 vm.formFields.

中标记为 required

如果您向下看一下“表单”部分,您会注意到 $valid 已设置为 true,即使未填充必需的指令。我本来希望这是 false.

有没有办法让 Formly 需要从自定义指令中引入的字段,该指令上有字段?

还行 抱歉混淆和延迟。 我已经创建了您正在寻找的答案。 因为您正在输入一个指令,所以您实际上需要将选项与您需要的值一起发送到该指令...... 这是工作示例...这意味着尽管您需要自己处理所有验证等,因为您不是通过 FormalyJS 而是在您自己的指令中生成元素。(确保没有其他方法可以做到这一点。 ..)

这是更正后的代码,要求/最大长度/最小长度:

jsbin

我实际上做的是将 Formly 的选项传递给我的指令并向其添加验证

   app.directive('exampleDirective', function() {
return {
  templateUrl: 'example-directive.html',
  scope:{
    options:'=options',
    ngModel:'=ngModel'
  },
  link:function(scope, element, attrs){
    scope.isRequired = scope.options.templateOptions.required;
    scope.minValue = scope.options.templateOptions.min;
    scope.maxValue = scope.options.templateOptions.max;
  }
};

});

<script type="text/ng-template" id="example-directive.html">
  <div class="form-group">
    <label for="{{::id}}">{{options.templateOptions.label}}</label>
    <input id="{{::id}}" name="{{::id}}" class="form-control" ng-model="ngModel" ng-required="isRequired" ng-minLength="{{minValue}} ng-maxLength={{maxValue}}"/>
  </div>
</script>

这是对 vm.formFields 中模板的补充 模板:''

所以现在当你想添加一个字段时,你需要将数据传递给指令并在指令中添加相应的代码...... 我对 Formly 不是很熟悉,但这是我可以给你的解决方案

注意: 我将选项项传递给指令,因为这就是 FormalyJS 构造它的方式……您始终可以使用自己的……但由于它在 formly 指令之后呈现,所以我认为它会更容易

编辑

这是更新后的 JSBIN

你可以看到我必须将 ngModel 添加到指令中......你也可以通过 require 来完成然后使用它,我更喜欢这样做......但你必须将它传递给div 定义指令... 检查更新的代码