好的,很抱歉混淆和延迟。我已经创建了您正在寻找的答案。因为您正在输入一个指令,您实际上需要使用您需要的值将选项发送到该指令......这是工作示例......这意味着虽然您需要自己处理所有验证等等,因为您是不是通过 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 不是很熟悉,但这是我可以给你的解决方案
注意:我将选项项传递给指令,因为这是 FormlyJS 构造它的方式....您始终可以使用自己的...但是由于它在 formly 指令之后呈现,因此认为它会更容易
编辑
这是一个更新的JSBIN
您可以看到我必须将 ngModel 添加到指令中...您也可以通过 require 执行它然后使用它,我更喜欢这样做...但是您必须将它传递给定义指令的 div ...检查更新的代码