angularjs – 如何在TypeScript中实现ng.IDirectiveFactory
发布时间:2020-12-17 18:02:19 所属栏目:安全 来源:网络整理
导读:我最近更新了我的typescript项目中的angular.d.ts文件.我现在在指令定义中得到一个打字稿编译错误.我在更新的angular.d.ts文件中注意到以下内容: interface IDirectiveFactory { (...args: any[]): IDirective;} 我试图找出如何实现此接口. 我得到这个编译
我最近更新了我的typescript项目中的angular.d.ts文件.我现在在指令定义中得到一个打字稿编译错误.我在更新的angular.d.ts文件中注意到以下内容:
interface IDirectiveFactory { (...args: any[]): IDirective; } 我试图找出如何实现此接口. 我得到这个编译错误:类型ng.DirectiveFactory需要一个调用签名,但类型“MyDirective”缺少. 这就是我的指令现在看起来的样子(以前使用较旧的angular.d.ts文件可以正常工作): class MyDirective{ constructor() { var directive: ng.IDirective = <ng.IDirective>{}; directive.priority = 0; directive.restrict = "E"; directive.scope = {...}; directive.template = '<div></div>'; directive.link = {...} return directive; } } 这是我用angular注册MyDirective类的地方: angular.module("MyModule",[]) .directive('myDirective',MyDirective); 上面的编译器错误很有意义,但是如何实现(… args:any []):IDirective签名)? 提前致谢 解决方法
指令()的旧签名曾经是……
directive(name: string,directiveFactory: Function): IModule; 将类用作函数是合法的.但this commit将签名更改为: directive(name: string,directiveFactory: IDirectiveFactory): IModule; IDirectiveFactory是一个返回IDirective的函数,因此directive()不再接受directiveFactory参数的类.把它改成…… function MyDirective () : ng.IDirective { var directive: ng.IDirective = <ng.IDirective>{}; directive.priority = 0; directive.restrict = "E"; directive.scope = {}; directive.template = '<div></div>'; return directive; } angular.module("MyModule",[]) .directive('myDirective',MyDirective); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |