【发布时间】:2016-10-31 12:17:22
【问题描述】:
我正在尝试使用 AngularJS 1.5 和 TypeScript 1.7 创建一个指令,以便我可以进行一些自定义表单验证。
I've followed this example 但是当我扩展 ng.INGModelController 时,Typescript 给了我一个“类型签名缺失”
interface IOneItemRequiredValidator extends ng.INgModelController {
$validators: {
oneItemRequired(modelValue: any, viewValue: any) : boolean;
};
}
我检查了 $validators,它是 IModelValidators 类型,具有以下签名:
interface IModelValidators {
[index: string]: (modelValue: any, viewValue: any) => boolean;
}
所以我尝试遵循这一点,现在 TypeScript 并没有抱怨,但是当我尝试访问 $validators 对象的新属性时它找不到它。
interface IOneItemRequiredValidator extends ng.INgModelController {
$validators: {
[oneItemRequired: string]: (modelValue: any, viewValue: any) => boolean;
};
}
angular
.module('app')
.directive('oneItemRequired', () => {
return {
restrict: 'A',
require: 'ngModel',
link: (scope: ng.IScope, element: ng.IAugmentedJQuery, attributes: ng.IAttributes, controller: IOneItemRequiredValidator) => {
controller.$validators.oneItemRequired = (modelValue, viewValue) => {
return viewValue !== null && viewValue !== undefined && viewValue.length > 0;
}
}
};
});
我是否错误地声明了我的新 IOneItemRequiredValidator 接口?谢谢!
【问题讨论】:
标签: angularjs angularjs-directive typescript