Я работаю над проектом Angular 6 и столкнулся с довольно досадной проблемой, так как я объединил ветку функций.
Для простоты:
- Мы используем модуль
ngx-translate
с самого начала проекта, и до сих пор он работал нормально
- Мы создаем функции (например, ту, которую я слил) в ветвях git, и мы объединяем их в ветке разработки, когда мы закончим
- До слияния и разработки работали до объединения
Теперь, после слияния, я получаю следующую ошибку в модуле ngx-translate
при загрузке приложения:
(еще одна копия трассировки стека)
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)
После дня поиска я все еще не могу понять, почему появилась эта ошибка. Странно то, что ни один из кодов, выдающих ошибку, не был отредактирован (ни в разработке, ни в ветке возможностей).
Я могу сказать, что эта ошибка возникает после вызова translateService.use('en')
(мы видим это на трассировке стека), и причина в том, что TranslateService
не был правильно создан при загрузке приложения.
Вот точка останова, когда вызывается конструктор TranslateService
, и мы видим, что большинство параметров undefined
:
Здесь та же точка останова, но с функциональной версией проекта (до слияния, поэтому), а параметр undefined
отсутствует:
Так что, если у кого-нибудь есть представление о том, что происходит, это будет ОГРОМНАЯ помощь, потому что у меня нет свежих идей!
Редактировать - вот мой код моего 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'));
});
}
}