ngx-translate:无法读取未定义的属性'currentLang'

时间:2018-08-27 16:19:25

标签: angular git angular6 ngx-translate

我正在从事Angular 6项目,由于合并了功能分支,因此我面临一个非常烦人的问题。

简单起见:

  • 我们从项目开始就使用ngx-translate模块,到目前为止,它一直运行良好
  • 我们正在git分支上创建功能(例如我合并的功能),并在完成后将它们合并到developer分支上
  • 开发和功能分支在合并之前均已工作

现在,合并后,当应用程序启动时,我在ngx-translate模块上收到以下错误: ngx-translate error

(堆栈跟踪的另一个副本) TypeError: Cannot read property 'currentLang' of undefined at TranslationService.get currentLang [as currentLang] (ngx-translate-core.js:398) at TranslationService.use (ngx-translate-core.js:489) at new AppComponent (app.component.ts:29) at createClass (core.js:11733) at createDirectiveInstance (core.js:11554) at createViewNodes (core.js:13095) at createRootView (core.js:12967) at callWithDebugContext (core.js:14455) at Object.debugCreateRootView [as createRootView] (core.js:13702) at ComponentFactory_.create (core.js:10705)

经过一天的搜索,我仍然不知道为什么会出现此错误。奇怪的是,产生错误的代码都没有被编辑过(在develop或feature分支上都没有)。

我可以说这个错误是在调用translateService.use('en')之后发生的(我们可以在堆栈跟踪中看到它),原因是TranslateService在应用程序引导程序上没有正确实例化。

在调用TranslateService的构造函数时,这是一个断点,我们可以看到大多数参数是undefinedBreakpoint 1

这里是相同的断点,但是具有项目的功能版本(因此在合并之前),并且没有undefined参数:Breakpoint 3

因此,如果有人对正在发生的事情有任何想法,那将是巨大的帮助,因为我没有新的想法了!

编辑-这是我的AppComponent

的代码
import { Component } from '@angular/core';

import { TranslateService } from '@ngx-translate/core';
import { LangService } from './core/services/lang.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss'],
})
export class AppComponent {
  constructor(
    private translate: TranslateService,
    private languageService: LanguageService,
  ) {
    this.translate.use('fr');
    const subLang = this.languageService.getLangs().subscribe((rep) => {
      this.translate.addLangues(rep);
      this.translate.setDefaultLang(rep.find((l) => l.defaut).code);
      this.translate.use(localStorage.getItem('lang'));
    });
  }
} 

1 个答案:

答案 0 :(得分:0)

好的,所以我终于弄清楚了正在发生什么。

在我的功能分支中只是编辑了tsconfig.json

所以这是一部分:

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    ...
    "target": "es6" <------- This is the part that is failing
  }
}

当我使用Angular CLI创建应用程序时,此行设置为"target": "es5",但出于某种原因我在功能分支中将其更改为es6,并且在合并之前一切正常。

是在合并之后,该错误出现了……我仍然不知道为什么!

所以我刚切换回"target": "es5",现在它可以正常工作了。

还是谢谢。