Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将函数传递到Angular.factory方法时如何使用$inject?_Angularjs_Typescript - Fatal编程技术网

Angularjs 将函数传递到Angular.factory方法时如何使用$inject?

Angularjs 将函数传递到Angular.factory方法时如何使用$inject?,angularjs,typescript,Angularjs,Typescript,我的原始代码如下所示(见下文)。注意$inject语句 module app.common { interface IProductResource extends ng.resource.IResource<app.domain.IProduct> { } export class ResourceFactory { static $inject =["$resource"]; constructor(p

我的原始代码如下所示(见下文)。注意$inject语句

 module app.common {
    interface IProductResource
        extends ng.resource.IResource<app.domain.IProduct> {

    }
    export class ResourceFactory {

        static $inject =["$resource"];
        constructor(private $resource: ng.resource.IResourceService) {
        }

        public getProductResource() : ng.resource.IResourceClass<IProductResource> {
            return this.$resource("/api/products/:productId");
        }
    }

    factory.$inject = ["$resource"];
    function factory($resource) : ResourceFactory {
        return new ResourceFactory($resource);
    }

    angular
        .module("common.services")
        .factory("resourceFactory",
                ["$resource",
                 factory]);
}
module app.common{
接口IPProductResource
扩展ng.resource.IResource{
}
出口级资源工厂{
静态$inject=[“$resource”];
构造函数(私有$resource:ng.resource.IResourceService){
}
public getProductResource():ng.resource.IResourceClass{
返回此.$resource(“/api/products/:productId”);
}
}
工厂。$inject=[“$resource”];
函数工厂($resource):ResourceFactory{
返回新的ResourceFactory($resource);
}
有棱角的
.模块(“公共服务”)
.factory(“资源工厂”,
[“$resource”,
工厂),;
}
我的新代码利用了lambda语法,如下所示(见下文)。在这种情况下,如何处理缩小问题

 module app.common {
    interface IProductResource
        extends ng.resource.IResource<app.domain.IProduct> {

    }

    export class ResourceFactory {

        static $inject =["$resource"];
        constructor(private $resource: ng.resource.IResourceService) {
        }

        public getProductResource() : ng.resource.IResourceClass<IProductResource> {
            return this.$resource("/api/products/:productId");
        }
    }

    angular
        .module("common.services")
        .factory("resourceFactory",
                ["$resource",
                 ($resource)=>new ResourceFactory($resource)]);

}
module app.common{
接口IPProductResource
扩展ng.resource.IResource{
}
出口级资源工厂{
静态$inject=[“$resource”];
构造函数(私有$resource:ng.resource.IResourceService){
}
public getProductResource():ng.resource.IResourceClass{
返回此.$resource(“/api/products/:productId”);
}
}
有棱角的
.模块(“公共服务”)
.factory(“资源工厂”,
[“$resource”,
($resource)=>新资源工厂($resource)];
}

老实说,你应该:

 angular
        .module("common.services")
        .service("resourceFactory",ResourceFactory);
由于使用了
static$inject
service
,因此它将正常工作

更多: