我在使用HMR (Hot Module Replacement)时正在使用Angular 6应用。
通常,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",