Angularjs Angular UpgradeModule,如何围绕不可升级指令编写包装器

Angularjs Angular UpgradeModule,如何围绕不可升级指令编写包装器,angularjs,angular,angularjs-directive,Angularjs,Angular,Angularjs Directive,我正在将AngularJS应用程序升级到Angular5,如果整个混合设置工作正常,我正在寻找一个解决方案来包装使用编译函数的指令或任何阻止升级的指令(如中所述)。 gkalpak说,这是anwser 3。创建您自己的(可升级)包装器指令,作为不可升级AngularJS指令和AngularJS指令之间的代理。 问题是,我找不到任何关于如何做的信息,更具体地说,关于如何在包装器中使用$injector检索指令 例如,以下指令: angular.module('xyz').directive('to

我正在将AngularJS应用程序升级到Angular5,如果整个混合设置工作正常,我正在寻找一个解决方案来包装使用编译函数的指令或任何阻止升级的指令(如中所述)。 gkalpak说,这是anwser

3。创建您自己的(可升级)包装器指令,作为不可升级AngularJS指令和AngularJS指令之间的代理。

问题是,我找不到任何关于如何做的信息,更具体地说,关于如何在包装器中使用
$injector
检索指令

例如,以下指令:

angular.module('xyz').directive('tooltip', ['some.provider', function (popup) {
    return {
        restrict: 'A',
        compile: function (element, attrs) {
            [...]
        }
    };
}]);
constructor(private el: ElementRef, private renderer: Renderer2,  injector: Injector, @Inject(DOCUMENT) private document) {
    //retrieve angularjs directive 
    this.directives = injector.get('$injector').get('tooltipDirective');
}

ngAfterViewInit(): void {
    this.directives[0].compile(this.el.nativeElement);
}
将用作
无法通过升级模块的常规方式导入:

@Directive({selector: '[tooltip]'})
export class TootlipDirective extends UpgradeComponent {

    @Input('tooltip') text: string;

    constructor(elementRef: ElementRef, injector: Injector) {
        super('tooltip', elementRef, injector);
    }
}
因为它将失败并出现
错误:升级指令“tooltip”包含不支持的功能:“compile”

如有任何指示,将不胜感激:)

编辑: 好的,根据我们的说法,没有模板的简单指令是不可能升级的。 尽管如此,我还是对
node_modules/@angular/upgrade/esm5/static.js
进行了一些反思,它使用
injector.get('$injector').get(name+'Directive')
来获取angularjs指令。使用这个,我可以注入我的原始指令并在angular指令中操作它:

angular.module('xyz').directive('tooltip', ['some.provider', function (popup) {
    return {
        restrict: 'A',
        compile: function (element, attrs) {
            [...]
        }
    };
}]);
constructor(private el: ElementRef, private renderer: Renderer2,  injector: Injector, @Inject(DOCUMENT) private document) {
    //retrieve angularjs directive 
    this.directives = injector.get('$injector').get('tooltipDirective');
}

ngAfterViewInit(): void {
    this.directives[0].compile(this.el.nativeElement);
}

这可能是我写过的最肮脏的黑客了。。。无论如何,它也没有真正的帮助。

你能添加一些代码吗?@Noki我添加了一个示例,但我的问题更多的是如何使用$injector检索
工具提示
指令(在angularjs中),然后在用作包装器的@directive中使用它。