gpt4 book ai didi

angular - ngx-翻译 : Cannot read property 'currentLang' of undefined

转载 作者:行者123 更新时间:2023-12-05 08:11:45 24 4
gpt4 key购买 nike

我正在处理一个 Angular 6 项目,自从我 merge 了一个功能分支后,我遇到了一个非常烦人的问题。

为了简单起见:

  • 我们从项目一开始就在使用ngx-translate模块,到现在为止一切正常
  • 我们正在 git 分支上创建功能(比如我 merge 的那个),完成后我们将它们 merge 到 develop 分支
  • 开发和功能分支在 merge 前都有效

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

(堆栈跟踪的另一个副本)
类型错误:无法读取未定义的属性“currentLang”
在 TranslationService.get currentLang [as currentLang] (ngx-translate-core.js:398)
在 TranslationService.use (ngx-translate-core.js:489)
在新的 AppComponent (app.component.ts:29)
在 createClass (core.js:11733)
在 createDirectiveInstance (core.js:11554)
在 createViewNodes (core.js:13095)
在 createRootView (core.js:12967)
在 callWithDebugContext (core.js:14455)
在 Object.debugCreateRootView [as createRootView] (core.js:13702)
在 ComponentFactory_.create (core.js:10705)

找了一天,还是想不通为什么会出现这个错误。奇怪的是,产生错误的代码都没有被编辑(无论是在开发分支还是功能分支)。

我可以看出这个错误是在调用 translateService.use('en') 之后发生的(我们可以在堆栈跟踪中看到它),原因是 TranslateService 未在应用 Bootstrap 中正确实例化。

这里是调用TranslateService的构造函数时的一个断点,我们可以看到大部分参数都是undefined:Breakpoint 1

这里是相同的断点,但是项目的功能版本( merge 之前,so),并且没有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'));
});
}
}

最佳答案

好吧,我终于明白发生了什么事。

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

所以这是部分:

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

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

是 merge 后出现的bug。。。到现在也不知道是什么原因!

所以我只是切换回 "target": "es5" 现在它可以工作了。

还是谢谢你

关于angular - ngx-翻译 : Cannot read property 'currentLang' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52043341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com