Skip to content

Commit a95e585

Browse files
committed
fix(TranslatePipe): don't subscribe multiple times to lang change event
Fixes #139
1 parent e96d9a5 commit a95e585

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

bundles/ng2-translate.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,12 @@ System.registerDynamic("src/translate.pipe", ["@angular/core", "./translate.serv
109109
this.lastParams = args;
110110
this.updateValue(query, interpolateParams);
111111
this._dispose();
112-
this.onLangChange = this.translate.onLangChange.subscribe(function(event) {
113-
_this.lastKey = null;
114-
_this.updateValue(query, interpolateParams);
115-
});
112+
if (!this.onLangChange) {
113+
this.onLangChange = this.translate.onLangChange.subscribe(function(event) {
114+
_this.lastKey = null;
115+
_this.updateValue(query, interpolateParams);
116+
});
117+
}
116118
return this.value;
117119
};
118120
TranslatePipe.prototype._dispose = function() {
@@ -134,7 +136,7 @@ System.registerDynamic("src/translate.pipe", ["@angular/core", "./translate.serv
134136
return module.exports;
135137
});
136138

137-
System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http", "rxjs/Observable", "rxjs/add/observable/of", "rxjs/add/operator/share", "rxjs/add/operator/map", "rxjs/add/operator/merge", "rxjs/add/operator/toArray", "./translate.parser"], true, function($__require, exports, module) {
139+
System.registerDynamic("src/translate.service", ["@angular/core", "rxjs/Observable", "rxjs/add/observable/of", "rxjs/add/operator/share", "rxjs/add/operator/map", "rxjs/add/operator/merge", "rxjs/add/operator/toArray", "./translate.parser"], true, function($__require, exports, module) {
138140
"use strict";
139141
;
140142
var define,
@@ -162,7 +164,6 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
162164
};
163165
};
164166
var core_1 = $__require('@angular/core');
165-
var http_1 = $__require('@angular/http');
166167
var Observable_1 = $__require('rxjs/Observable');
167168
$__require('rxjs/add/observable/of');
168169
$__require('rxjs/add/operator/share');
@@ -201,8 +202,7 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
201202
}());
202203
exports.TranslateStaticLoader = TranslateStaticLoader;
203204
var TranslateService = (function() {
204-
function TranslateService(http, currentLoader, missingTranslationHandler) {
205-
this.http = http;
205+
function TranslateService(currentLoader, missingTranslationHandler) {
206206
this.currentLoader = currentLoader;
207207
this.missingTranslationHandler = missingTranslationHandler;
208208
this.currentLang = this.defaultLang;
@@ -366,7 +366,7 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
366366
TranslateService.prototype.resetLang = function(lang) {
367367
this.translations[lang] = undefined;
368368
};
369-
TranslateService = __decorate([core_1.Injectable(), __param(2, core_1.Optional()), __metadata('design:paramtypes', [http_1.Http, TranslateLoader, MissingTranslationHandler])], TranslateService);
369+
TranslateService = __decorate([core_1.Injectable(), __param(1, core_1.Optional()), __metadata('design:paramtypes', [TranslateLoader, MissingTranslationHandler])], TranslateService);
370370
return TranslateService;
371371
}());
372372
exports.TranslateService = TranslateService;
@@ -398,7 +398,7 @@ System.registerDynamic("src/translate.parser", [], true, function($__require, ex
398398
key = '';
399399
do {
400400
key += keys.shift();
401-
if (target[key] !== undefined && (typeof target[key] === 'object' || !keys.length)) {
401+
if (target !== undefined && target[key] !== undefined && (typeof target[key] === 'object' || !keys.length)) {
402402
target = target[key];
403403
key = '';
404404
} else if (!keys.length) {

src/translate.pipe.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,12 @@ export class TranslatePipe implements PipeTransform, OnDestroy {
113113
this._dispose();
114114

115115
// subscribe to onLangChange event, in case the language changes
116-
this.onLangChange = this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
117-
this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated
118-
this.updateValue(query, interpolateParams);
119-
});
116+
if(!this.onLangChange) {
117+
this.onLangChange = this.translate.onLangChange.subscribe((event: LangChangeEvent) => {
118+
this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated
119+
this.updateValue(query, interpolateParams);
120+
});
121+
}
120122

121123
return this.value;
122124
}

0 commit comments

Comments
 (0)