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