2017-06-21 2 views
0

En utilisant angular2 avec @ Module NGX-translate@ NGX-translate obtenir observables pas tirer sur le changement de langue

code I qui fait un changement de langue en fonction de sélection de l'utilisateur et définir la langue à l'aide:

this.translate.use('en'); 

Ailleurs dans d'autres composants j'utilise le .get observable pour récupérer des étiquettes.

this.translate.get(element.bucketId.toUpperCase()).subscribe(x => { bucket.bucketLabel = x; }); 

L'étiquette initiale des charges linguistiques actuelles fines, mais quand le .use est exécuté, l'étiquette ne change pas à la nouvelle langue. L'observable ne tire pas.

Pour contourner cela, je dois faire ce qui suit:

this.translate.get(element.bucketId.toUpperCase()).subscribe(x => { bucket.bucketLabel = x; }); 
this.translate.onLangChange.subscribe(event => { 
    bucket.bucketLabel = this.translate.instant(element.bucketId.toUpperCase()); 
}); 

Cela semble évidemment excessive.

Le code utilisant les tuyaux et les directives change parfaitement de langue. Est-ce que j'interprète mal ce que le .get fait? Ou y a-t-il un autre truc qui me manque quand je fais le changement de langue? Quelque chose au-delà de faire un this.translate.use (lang);

Répondre

1

Essayez la méthode .stream(), elle renverra de nouvelles valeurs lorsque la langue change.

https://github.com/ngx-translate/core#methods

+0

this.translate.stream ('DASHBOARD.LOGOUT'); arrive avec: La propriété 'stream' n'existe pas sur le type 'TranslateService' –