参考此示例:http://jsbin.com/cenugiziju/edit?html,js,output
我创建了一个指令:example-directive
该指令由templateUrl组成,该模板在此html文件中具有标签和输入。此字段在required
内标记为vm.formFields
。
如果您在“表单”部分中查看,即使未填充所需的指令,您也会注意到$valid
已设置为true
。我原以为这是false
。
有没有办法让Formly要求从包含字段的自定义指令引入的字段?
答案 0 :(得分:2)
确定 抱歉混淆和延迟。 我创造了你想要的答案。 因为您输入的指令实际上需要使用您需要的值将选项发送到该指令... 这是工作示例......这意味着你需要自己处理所有的验证等等,因为你没有通过FormalyJS生成元素,而是在你自己的指令中。(确保没有其他方法可以做到这一点。) ..)
这是带有required / maxlength / minlength:
的更正代码我实际做的是将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中模板的添加 模板:&#39;&#39;
所以现在当你想要添加一个字段时,你需要将数据传递给指令并在指令中添加相应的代码...... 我对Formly并不是很熟悉,但这是我能给你的解决方案
注意: 我将选项传递给指令,因为这是FormalyJS构造它的方式....你总是可以使用自己的......但是因为它在形式指令之后呈现,所以认为它会更容易
修改强>
这是更新的JSBIN
你可以看到我必须在指令中添加ngModel ...你也可以通过require然后使用它,我更喜欢这样做...但你必须将它传递给div定义指令...... 签出更新的代码