<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