Angular2在应用程序启动时设置语言

时间:2018-02-02 09:12:24

标签: angular typescript

我有一个关于如何在Angular2应用程序中设置语言的问题。我有一个休息服务来从后端获取语言,所以我进行异步调用,但在此期间,应用程序启动时没有设置语言。我的appComponent是:

export class AppComponent implements OnInit {
     constructor(private translate: TranslateService, private service: Service) { }
ngOnInit() {
    this.service.getLanguage().subscribe(
      response => {
        if(response.result){
          let lang = response.lang.substring(0, response.lang.indexOf('-'));
          this.translate.use(lang);
        } else {
          this.translate.use('en');
        }
      },
      err => {
        this.translate.use('en');
      }
    );
  }
}

我认为这是设置应用语言的错误方法......有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:0)

你正在做的方式是正确的但是你可以在从这样的后端获得结果之前使用loader来优化它

export class AppComponent implements OnInit {
    constructor(private translate: TranslateService, private service: Service) {}
    ngOnInit() {
        this.loader = true;
        this.service.getLanguage()
            .subscribe(response => {
                    this.loader = false;
                    if (response.result) {
                        let lang = response.lang.substring(0, response.lang.indexOf('-'));
                        this.translate.use(lang);
                    } else {
                        this.translate.use('en');
                    }
                },
                err => {
                    this.loader = false;
                    this.translate.use('en');
                }
            );
    }
}

并根据loader变量,您可以将加载图片显示到前端。