Rewriting this question for clarification
How can I check transcluded form's validity in directive ?
I would like to check myForm.$valid
in link function
of directive. I will inject different sort of forms into my directive or use my directive in different forms you can say
Difficulty is that scope is isolated and non of following answer worked for me.
Please find complete code here,
https://plnkr.co/edit/K3IrE5KVehWXFM9JEMvE?p=preview
I want to disable "Save" button when form is not valid.
If a method measures what it claims to measure, and the results closely correspond to real-world values, then it can be considered valid. There are four main types of validity: Construct validity: Does the test measure the concept that it’s intended to measure? Content validity: Is the test fully representative of what it aims to measure?
Validity tells you how accurately a method measures something. If a method measures what it claims to measure, and the results closely correspond to real-world values, then it can be considered valid. There are four main types of validity:
Note that this article deals with types of test validity, which determine the accuracy of the actual components of a measure. If you are doing experimental research, you also need to consider internal and external validity, which deal with the experimental design and the generalizability of results.
To evaluate criterion validity, you calculate the correlation between the results of your measurement and the results of the criterion measurement. If there is a high correlation, this gives a good indication that your test is measuring what it intends to measure.
To answer your primary question, you can expose and bind the form like any other model value:
angular.module("main", [])
.directive("formDirective", formDirective);
function formDirective() {
return {
restrict: "A",
scope: {
formModel: "=formModel"
},
link: function (scope, element, attrs) {
scope.$watch("formModel.$valid", function (newValue, oldValue) {
console.log(newValue, oldValue);
});
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="main">
<div form-directive form-model="myForm">
<div>
<form name="myForm">
<div>
<input type="text" ng-model="name" required="required">
</div>
Valid: {{myForm.$valid}}
</form>
<div>
</div>
</div>
However, as became clear from our conversation on chat, your overall problem is more complicated.
I have added a working example here: https://plnkr.co/edit/lkfdmc0PLRadfYFVhFAm?p=preview
The key aspects to realize here are:
$uibModal.open
, which will instantiate the referenced controller editCtrl
and load your template editCtrl.html
.dialog.html
. It is important to note here, that the scope of your esDlg directive is now available in the template of dialog.html
, so you can access all properties defined in the scope
of the directive declaration.angular.module("main", [])
.directive("formDirective", formDirective);
function formDirective() {
return {
restrict: "A",
scope: {
formModel: "=name"
},
link: function (scope, element, attrs) {
scope.$watch("formModel.$valid", function (newValue, oldValue) {
console.log(newValue, oldValue);
});
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="main">
<div my-directive>
<div>
<form name="myForm" form-directive>
<div>
<input type="text" ng-model="name" required="required">
</div>
Valid: {{myForm.$valid}}
</form>
<div>
</div>
</div>
I advise you to use angular-auto-validate
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With