Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular ngx翻译:无法读取属性';currentLang';未定义的_Angular_Git_Angular6_Ngx Translate - Fatal编程技术网

Angular ngx翻译:无法读取属性';currentLang';未定义的

Angular ngx翻译:无法读取属性';currentLang';未定义的,angular,git,angular6,ngx-translate,Angular,Git,Angular6,Ngx Translate,我正在做一个Angular 6项目,自从我合并了一个特性分支后,我面临着一个非常恼人的问题 简单来说: 从项目一开始,我们就在使用ngx translate模块,到目前为止,该模块运行良好 我们正在git分支上创建特性(比如我合并的那个),完成后我们在develop分支上合并它们 在合并之前,“开发”和“功能”分支都工作 现在,在合并之后,当应用程序引导时,ngx translate模块上出现以下错误: (堆栈跟踪的另一个副本) TypeError:无法读取未定义的属性“currentL

我正在做一个Angular 6项目,自从我合并了一个特性分支后,我面临着一个非常恼人的问题

简单来说:

  • 从项目一开始,我们就在使用
    ngx translate
    模块,到目前为止,该模块运行良好
  • 我们正在git分支上创建特性(比如我合并的那个),完成后我们在develop分支上合并它们
  • 在合并之前,“开发”和“功能”分支都工作
现在,在合并之后,当应用程序引导时,
ngx translate
模块上出现以下错误:

(堆栈跟踪的另一个副本)

TypeError:无法读取未定义的属性“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[作为createRootView](core.js:13702)
在ComponentFactory.create(core.js:10705)

经过一天的搜索,我仍然不明白为什么会出现这个错误。奇怪的是,所有产生错误的代码都没有经过编辑(无论是在开发分支还是功能分支上)

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

调用
TranslateService
的构造函数时,这里有一个断点,我们可以看到大多数参数都是
未定义的

这里是相同的断点,但具有项目的功能版本(在合并之前,所以),并且没有
未定义的
参数:

所以,如果有人知道发生了什么,这将是一个巨大的帮助,因为我没有新的想法

编辑-这是我的
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
  }
}
{
“保存”:false,
“编译器选项”:{
“baseUrl”:“/”,
...

“目标”:“es6”您可以检查“差异”在合并之前的提交中,如果问题发生在以前的开发分支中,那么它在合并之前工作正常。分支之间很可能存在版本不匹配。请向我们展示
AppComponent
?@Niladri我现在检查模块版本,我会与您保持联系。@user184994我编辑过我的帖子添加了
AppComponent
的代码,但我认为这不会有多大帮助,因为这段代码已经很长时间没有被修改过了。@Niladri所以我做了一些检查,但似乎不是版本不匹配(或者可能是
warn.lock
的奇怪行为)。我做了以下测试,这对我来说是相关的:在旧的Functional版本上进行I
git checkout
(并对其进行测试,使其工作!),然后在上一个版本上进行I
git checkout
(使
node\u模块
完全没有更改),然后应用程序中断。