2017-02-28 183 views
1

如何检测其他组件中的语言变化?我的检测是在头部组件中进行的。我的目标是检测语言变化和设置风格。Angular 2 TranslateService检测变化

子组件:

import { TranslateService } from "ng2-translate"; 
export class ChildComponent{ 
    public browserLang: string; 
    constructor(private translate: TranslateService) { 
     this.browserLang = translate.getBrowserLang(); 
    } 
} 

的Html孩子:

<div ng-class="{black: browserLang == 'en', red: browserLang == 'de'}" > 

的那个结果是:不添加类。如果我输出语言字符串(EN)是正确的。但它没有听任何改变。如何让它听和改变课程?

+0

这可能使用这种方法组件可以跟对方帮你http://mean.expert/2016/05/21/angular-2-component-communication/ 。 –

+0

另一种方式是你可以创建一个设置一些变量的服务,比如get set方法。这里得到应该返回Observable,所以当你改变变量时,其他已订阅的组件会检测到这些变化。 –

回答

1

添加这些做的伎俩:

import {TranslateService, LangChangeEvent} from "ng2-translate" 

export class ChildComponent { 
    public browserLang: string; 
    constructor(private translate: TranslateService) { 
     translate.onLangChange.subscribe(lang=>{ 
      this.browserLang = lang; 
     }) 
    } 
    ngOnInit(){ 
     this.translate.onLangChange.subscribe((event: LangChangeEvent) => { 
      this.browserLang = event.lang 
     }); 
    } 
}