рдЬреИрд╕рд╛ рдХрд┐ рд╢реАрд░реНрд╖рдХ рдХрд╣рддрд╛ рд╣реИ, ngMessagesInclude рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдореВрд▓ ngMessages рдХреЛ DOM рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдгреАрдп рдЖрдВрддрд░рд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рддрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм ngMessage
рдХреЛ ngMessages
рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рдЗрдирд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЬрдм рдореВрд▓ рддрддреНрд╡ рдЕрднреА рднреА DOM рдкрд░ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдПрдХ рдПрдирдЬреА-рд╕рдВрджреЗрд╢ рд▓реЗрдВ:
<div ng-if="myForm.$submitted" ng-messages="myForm.myName.$error">
<div ng-messages-include="messages.html"></div>
</div>
рд╕рдмрдорд┐рд╢рди рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
this.change = function(myForm) {
var self = this;
myForm.$setSubmitted(); // event A
$scope.$applyAsync(function () {
self.currentStep = 'step2.html'; // event B
});
};
рдШрдЯрдирд╛ (рдП) рдкрд░, messages.html
рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ $templateRequest
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд╛рдкрд╕ рдЖрдиреЗ рддрдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рд░реБрдХреА рд╣реБрдИ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдИрд╡реЗрдВрдЯ (B) ngMessages
рдФрд░ рдЙрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ DOM рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ, ngMessagesInclude рд╕рд╛рдордЧреНрд░реА рдЖрддреА рд╣реИ рдФрд░ рдХреЛрдгреАрдп рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдЕрдм ngMessages
рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
Plnkr: http://plnkr.co/edit/0GOOLERvfj7n9vDVEyZp?p=preview
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп, рдпрд╣ ngIf
рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛ред
рд╕рдВрд╕реНрдХрд░рдг 1.4.4 рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ:
ng-if="myForm.$submitted && myForm.myName.$invalid"
рдШрдЯрдХ рдкрдХреНрд╖ рдкрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, require: '^^ngMessages'
рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдПрдХ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ ngMessages рдореЗрдВ HTML рдХреЛ рд╕рдВрдХрд▓рд┐рдд/рд▓рд┐рдВрдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджрд╛рдпрд░рд╛ рдирд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ:
$templateRequest(src).then(function(html) {
if (scope.$$destroyed) return;
// ...
}
рдЗрд╕ рддрд░рд╣ ngInclude рдЙрд╕реА рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ ngInclude
рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред
@awerlang рдпрд╛ @jpekkala , рдХреНрдпрд╛ рдЖрдк рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ?
рдЬрд╝рд░реВрд░ред рдореИрдВ рдПрдХ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░реВрдВрдЧрд╛ред