import {inject, NewInstance} from 'aurelia-framework';
import {ValidationController, ValidationRules} from 'aurelia-validation';
@inject(NewInstance.of(ValidationController), NewInstance.of(ValidationController))
export class ItalianRestaurant {
pizza;
pasta;
pizzaValidationController;
pastaValidationController
constructor(pizzaValidationController, pastaValidationController) {
this.pizzaValidationController = pizzaValidationController;
this.pastaValidationController = pastaValidationController;
const pizzaRules = ValidationRules
.ensure((res: ItalianRestaurant) => res.pizza).required()
.rules;
this.pizzaValidationController.addObject(this, pizzaRules);
const pastaRules = ValidationRules
.ensure((res: ItalianRestaurant) => res.pasta).required()
.rules;
this.pastaValidationController.addObject(this, pastaRules);
}
orderPizza() {
this.pizzaValidationController.validate()
.then(result => {
if (result.valid) {
alert("Ordering this pizza: " + this.pizza);
}
});
}
orderPasta() {
this.pastaValidationController.validate()
.then(result => {
if (result.valid) {
alert("Ordering this pasta: " + this.pasta);
}
});
}
}
In your view you need to take care to associate each input with the correct validation controller :
I18N View :
<template>
<form validation-errors="errors.bind: pizzaErrors; controller.bind: pizzaValidationController"
submit.delegate="orderPizza()">
<label for="pizza">Choose a pizza:</label>
<input id="pizza" value.bind="pizza & validateManually:pizzaValidationController">
<span class="help-block" repeat.for="errorInfo of pizzaErrors">
${errorInfo.error.message}
</span>
<input type="submit" value="Order pizza!">
</form>
<form validation-errors="errors.bind: pastaErrors; controller.bind: pastaValidationController"
submit.delegate="orderPasta()">
<label for="pasta">Choose a pasta:</label>
<input id="pasta" value.bind="pasta & validateManually:pastaValidationController">
<span class="help-block" repeat.for="errorInfo of pastaErrors">
${errorInfo.error.message}
</span>
<input type="submit" value="Order pasta!">
</form>
</template>
In the forms above you can see that each validation-errors
attribute and each validateManually
binding behavior is bound to the appropriate validation controller.