$provide.decorator为指令提供未知的提供程序

$provide.decorator giving unknown provider for directives

本文关键字:未知 程序 指令 provide decorator      更新时间:2023-10-06

我懒惰地加载依赖于用户的模块。然后,我不想为与模块一起加载的指令声明decorator。但当我试图装饰一个指令时,我得到了未知的提供者。

angular.module(moduleName).config(function ($provide) {
    var invokeQueue = angular.module(moduleName)._invokeQueue;
    invokeQueue.forEach(function (service) {
        if(service[1] === 'directive'){
            var directive = service[2][0];
            $provide.decorator(directive, function ($delegate) {
                return $delegate;
            })
        }
    });
});

var指令是正在设置的指令名称。

错误

[$injector:unp]未知提供程序:demoDirectiveProvider

如果我将代码改为接受服务或工厂,它就会起作用。

以下两项工作

if(service[1] === 'service')
if(service[1] === 'factory')

为什么这不能与指令一起工作的任何建议

原来角度指令名称的后缀是"directive"。

angular.module(moduleName).config(function ($provide) {
    var invokeQueue = angular.module(moduleName)._invokeQueue;
    invokeQueue.forEach(function (service) {
        if(service[1] === 'directive'){
            var directive = service[2][0];
            console.log(directive);
            $provide.decorator(directive+'Directive', function ($delegate) {
                return $delegate;
            })
        }
    });
});