加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读