AngularJS如何注入角打字稿中的其他模块常量?

发布时间: 2017/4/16 21:23:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在 angular1,我们定义常量以这种方式,

angular.module('taskApp', [
  'ui.router',
  'angular-loading-bar',
  'ngMessages',
])
.constant('url', {
   BASE: 'http://localhost:3222',
   BASE_API: 'http://localhost:3222/v1'
});

然后我可以把它注射到任何模块中我想要像这样,

Auth.$inject = ['$http', 'url'];

function Auth($http, url)

现在使用打印稿,我想这样做,我见过这种方法︰注入角常数的打字稿,这似乎是好,但不是我在寻找的方法。

从我的研究

  static $inject = ["$resource", "url"];
  constructor(private $resource: ng.resource.IResourceService, private url: ng.IModule)

我使用 IModule,因为它是唯一的线索,从角的 tsd 文件

/**
 * Register a constant service, such as a string, a number, an array, an object or a function, with the $injector. Unlike value it can be injected into a module configuration function (see config) and it cannot be overridden by an Angular decorator.
 *
 * @param name The name of the constant.
 * @param value The constant value.
 */
constant(name: string, value: any): IModule;
constant(object: Object): IModule;

但找不到正确的属性来检索我的变量

enter image description here

解决方法 1:

一种方法来做它将定义一个接口,描述常数。

interface URL_CONSTANTS {
   BASE: string,
   BASE_API: string
}

那么你就能把它用作类型的注入的常数。

static $inject = ["$resource", "url"];
constructor(private $resource: ng.resource.IResourceService, private url: URL_CONSTANTS)
赞助商