在Typescript和Angular 7中导入运行时可配置的JSON

在Typescript和Angular 7中导入运行时可配置的JSON,angular,typescript,angular7,Angular,Typescript,Angular7,我的应用程序中有一个运行时翻译系统,在切换到Angular 7之前,它使用http请求加载一个包含翻译的JSON文件,如下所示: loadLanguage(lang: string) { this.http.get('assets/lang/' + lang + '.json) .toPromise() .then((translations) => this.translations = translations; ) } 作为Angular

我的应用程序中有一个运行时翻译系统,在切换到Angular 7之前,它使用http请求加载一个包含翻译的JSON文件,如下所示:

loadLanguage(lang: string) {
    this.http.get('assets/lang/' + lang + '.json)
        .toPromise()
        .then((translations) => this.translations = translations; ) 
}
作为Angular 7升级的一部分,我决定尝试直接导入json,而不是使用http来获取它。这是我实施它的新方式:

async loadLanguage(lang: string) {
    this.translations = await import('assets/lang/' + lang + '.json);
}
在更改语言方面,这与我预期的工作方式相同,但我遇到的问题是编译后更改JSON文件对导入的输出没有影响

从编译生成的包来看,所有导入的文件似乎都被编译成块,然后在我请求特定的json文件时加载这些块。我只是对这些导入以及它们与webpack一起使用时的工作方式有了错误的认识,还是在重构我的解决方案时有一些明显的遗漏


谢谢

我认为你不应该这样做。As import()在编译后转换为required()。另外,这不是一个角度特性,而是一个打字脚本特性。 这里有一篇关于类型的非常好和详细的文章


建议您使用http调用下载动态运行时配置

是的,当我把这个问题打出来的时候,我想我可能是弄错了,试图在我的配置中使用TS动态导入。谢谢你的快速回复。