Я работаю над приложением Angular 6, используя HMR (горячая замена модуля) .
Обычно TranslateService работает как положено. Но когда мой модуль обновляется HMR, сервис не возвращает ожидаемое значение.
Например:
component.ts
translate$: Observable<string[]>;
constructor(translate: TranslateService) {}
ngOnInit() {
this.translate$ = Object.values(this.translate.instant('property'));
}
component.html
<div *ngFor="translate$ | async as translate">
{{ translate }}
</div>
en.json
//// i18n:
{
"property": {
"sub": "value",
"sub2:" value2"
}
}
Когда я впервые инициализирую компонент, все нормально. «значение» и «значение2» отображаются. Но когда я изменяю код в моем компоненте, HMR запускается, и результат this.translate.instant('property')
равен просто "property"
. Я пытался использовать .get(..)
вместо instant(...)
, но у меня такое же поведение.
Если я уничтожу компонент и построю его снова, он будет выглядеть нормально.
Связанные зависимости :
"@angular/cli": "~6.1.5",
"@angularclass/hmr": "^2.1.3",
"@ngx-translate/core": "^10.0.2",
"@ngx-translate/http-loader": "^3.0.1",