Я создал следующую фиктивную директиву с машинописным текстом:
export class Room implements ng.IDirective{
public restrict = 'A';
public require = 'ngModel';
public static DirectoryName = "room";
public link = (scope: ng.IScope, element: ng.IAugmentedJQuery, attrs: ng.IAttributes, ctrl : IRoomValidation) => {
ctrl.$validators.room = function(modelValue, viewValue) {
var ROOM_REGEXP = /^\w+$/;
if (ctrl.$isEmpty(modelValue)) {
// consider empty models to be valid
return true;
}
if (ROOM_REGEXP.test(viewValue)) {
// it is valid
return true;
}
// it is invalid
return false;
};
}
public static factory(): ng.IDirectiveFactory {
var directive = () => new Room();
return directive;
}
}
interface IRoomValidation extends ng.INgModelController {
$validators : {
room(modelValue : string, viewValue : string);
}
}
Директива используется в следующем месте:
<form id="form" novalidate>
<label for="creation-name">Name:</label>
<input type="text" name="name" class="form-control" id="creation-name" ng-model="lobby.currentItem.name" room>
<span ng-show="form.name.$error.room">Only alphanumeric characters are accepted as input!</span>
</form>
Функция ссылки в директиве вызывается и оценивается, как я и ожидал, но, к сожалению, сообщение об ошибке не отображается.
Есть ли способ, как я могу устранить эту проблему? С инструментами, которые я знаю, я очень ограничен.