Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
将translateProvider.useLoader与Typescript一起使用_Typescript_Angular Translate - Fatal编程技术网

将translateProvider.useLoader与Typescript一起使用

将translateProvider.useLoader与Typescript一起使用,typescript,angular-translate,Typescript,Angular Translate,我不熟悉AngularJs和Typescript。我正在尝试实现I18n。我的资源包位于远程服务器中。我使用$translateProvider.useLoader('TranslationFileLoader',{}),其中TranslationFileLoader是一个自定义的装入器类 TranslationFileLoader类如下所示: export class TranlationFilesLoader { public static $inject = ['$http',

我不熟悉AngularJs和Typescript。我正在尝试实现I18n。我的资源包位于远程服务器中。我使用$translateProvider.useLoader('TranslationFileLoader',{}),其中TranslationFileLoader是一个自定义的装入器类

TranslationFileLoader类如下所示:

export class TranlationFilesLoader  {
    public static $inject = ['$http', '$q' ];

    constructor( $http: ng.IHttpService , $q: ng.IQService, options: any ) {

      var deferred = $q.defer();
      var currentLocale = options.key;
      var proxyurl = '/content?locale='+currentLocale;
      var req = {
         method:'GET',
         url: proxyurl ,
         }
      };
      $http(req).then(
        function(result) {
          deferred.resolve(result.data);
        },
        function(){
          deferred.reject(options.key)
        }
      );
      return deferred.promise;
    }
  }
在模块配置中,我编写了以下内容

.config(function ($translateProvider : ng.translate.ITranslateProvider) {
    $translateProvider.useLoader('TranlationFilesLoader', {});
    $translateProvider.preferredLanguage('en_us');// is applied on first load
    $translateProvider.useLocalStorage();// saves selected language to localStorage
  })
我还以书面形式登记了工厂

.factory('TranslationFileLoader',TranslationFileLoader)

我得到的错误是:未捕获错误:[$injector:undf]提供程序“TranslationFileLoader”必须从$get factory方法返回一个值

有人试过这个吗?我被困在不同的地方。请帮忙。
感谢您使用
$translateProvider.useLoader('translationFileLoader',{})
您必须将名称
translationFileLoader
注册到angular


在您的情况下,执行:
.service('translationFileLoader',translationFileLoader')位于代码中的相关位置。

一个愚蠢的错误是不允许我检索选项的值

工作代码如下

export class TranslationFilesLoader  {

public static $inject = ['$http', '$q' ];

constructor( $http: ng.IHttpService , $q: ng.IQService) {

   return function (options) {
      var deferred = $q.defer();
      var currentLocale = options.key;
      var proxyurl = '/content?locale='+currentLocale;
      var req = {
         method:'GET',
         url: proxyurl ,
      };
     $http(req).then(
       function(result) {
         deferred.resolve(result.data);
       },
       function(){
        deferred.reject(options.key)
       }
     );
    return deferred.promise;
  }
}

我编辑了我的问题。我已经把这个班注册为工厂。我需要使用options.key了解所选的当前语言。在AngularTranslate文档中,它说它是自动注入的,但我不能将它与typescript一起使用。