<form name="c.aForm">
<someDirectiveWithBugHere></someDirectiveWithBugHere>
</form>
<div>{{c.aForm.$pristine}}</div>
You can't set the aForm to pristine on constructor, as aForm is not yet defined while on constructor:
module App.UserEdit
{
export class MainController
{
aForm: ng.IFormController;
constructor(public Resources: InhouseLib.Resources)
{
this.aForm.$setPristine();
}
}
}
Setting the form to pristine while on constructor would give this result:
TypeError: Cannot read property '$setPristine' of undefined
at new MainController
A work-around is to set the pristine state after the form is loaded, and by calling the expression (that will set the pristine to clean) on ng-init:
<form name="c.aForm">
<someDirectiveWithBugHere></someDirectiveWithBugHere>
</form>
<div ng-init="c.setClean()"></div>
<div>{{c.aForm.$pristine}}</div>
Remove the $setPristine from the controller and move it to setClean:
module App.UserEdit
{
export class MainController
{
aForm: ng.IFormController;
constructor(public Resources: InhouseLib.Resources)
{
}
setClean(): void
{
this.aForm.$setPristine();
}
}
}
Or if you don't want the controller to have concerns on those stuff, you can initialize the form's state directly on html.
<div ng-init="c.aForm.$setPristine();"></div>
<div>{{c.aForm.$pristine}}</div>
No comments:
Post a Comment