Skip to content

Commit

Permalink
fix(TranslatePipe): don't subscribe multiple times to lang change event
Browse files Browse the repository at this point in the history
Fixes #139
  • Loading branch information
ocombe committed Jun 22, 2016
1 parent e96d9a5 commit a95e585
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
20 changes: 10 additions & 10 deletions bundles/ng2-translate.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,12 @@ System.registerDynamic("src/translate.pipe", ["@angular/core", "./translate.serv
this.lastParams = args;
this.updateValue(query, interpolateParams);
this._dispose();
this.onLangChange = this.translate.onLangChange.subscribe(function(event) {
_this.lastKey = null;
_this.updateValue(query, interpolateParams);
});
if (!this.onLangChange) {
this.onLangChange = this.translate.onLangChange.subscribe(function(event) {
_this.lastKey = null;
_this.updateValue(query, interpolateParams);
});
}
return this.value;
};
TranslatePipe.prototype._dispose = function() {
Expand All @@ -134,7 +136,7 @@ System.registerDynamic("src/translate.pipe", ["@angular/core", "./translate.serv
return module.exports;
});

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) {
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) {
"use strict";
;
var define,
Expand Down Expand Up @@ -162,7 +164,6 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
};
};
var core_1 = $__require('@angular/core');
var http_1 = $__require('@angular/http');
var Observable_1 = $__require('rxjs/Observable');
$__require('rxjs/add/observable/of');
$__require('rxjs/add/operator/share');
Expand Down Expand Up @@ -201,8 +202,7 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
}());
exports.TranslateStaticLoader = TranslateStaticLoader;
var TranslateService = (function() {
function TranslateService(http, currentLoader, missingTranslationHandler) {
this.http = http;
function TranslateService(currentLoader, missingTranslationHandler) {
this.currentLoader = currentLoader;
this.missingTranslationHandler = missingTranslationHandler;
this.currentLang = this.defaultLang;
Expand Down Expand Up @@ -366,7 +366,7 @@ System.registerDynamic("src/translate.service", ["@angular/core", "@angular/http
TranslateService.prototype.resetLang = function(lang) {
this.translations[lang] = undefined;
};
TranslateService = __decorate([core_1.Injectable(), __param(2, core_1.Optional()), __metadata('design:paramtypes', [http_1.Http, TranslateLoader, MissingTranslationHandler])], TranslateService);
TranslateService = __decorate([core_1.Injectable(), __param(1, core_1.Optional()), __metadata('design:paramtypes', [TranslateLoader, MissingTranslationHandler])], TranslateService);
return TranslateService;
}());
exports.TranslateService = TranslateService;
Expand Down Expand Up @@ -398,7 +398,7 @@ System.registerDynamic("src/translate.parser", [], true, function($__require, ex
key = '';
do {
key += keys.shift();
if (target[key] !== undefined && (typeof target[key] === 'object' || !keys.length)) {
if (target !== undefined && target[key] !== undefined && (typeof target[key] === 'object' || !keys.length)) {
target = target[key];
key = '';
} else if (!keys.length) {
Expand Down
10 changes: 6 additions & 4 deletions src/translate.pipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,12 @@ export class TranslatePipe implements PipeTransform, OnDestroy {
this._dispose();

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

return this.value;
}
Expand Down

0 comments on commit a95e585

Please sign in to comment.