使用自定义路径的ngx-translate:createTranslateLoader方法在编译为AOT时不起作用

时间:2018-03-15 10:37:26

标签: angular lazy-loading aot ngx-translate

我目前正在尝试使用某些i18n创建应用程序。 我使用ngx-translate翻译我的应用程序。

一切正常,直到我尝试编辑createTranslateLoader方法从另一个文件夹中获取我的.json文件。

目前我有这个(并且有效):

export function createTranslateLoader(http: HttpClient) {
  return new TranslateHttpLoader(http , './assets/i18n/', '.json');
}

但是,当我将./assets/i18n/更改为./locale/i18n/时(与资产处于同一级别并且与locale / i18n /文件夹具有相同的内容),我收到以下错误:

  

ERROR Object {headers:Object,status:404,statusText:" Not Found",   url:" http://localhost:8910/locale/i18n/en.json",ok:false,name:   " HttpErrorResponse",消息:" http://localhost:8910/locale/i18n/en.json"的Http失败响应,   错误:"

我在AOT编译,所以在我构建之后我去了看dist文件夹。在那里,我看到编译的文件夹仍然有一个'资产'包含i18n文件夹的文件夹(以及所需的json文件)。

所以现在感觉在编译为AOT时没有办法将translateLoader设置为自定义文件夹,是否有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

[解决]

在.angular-cli.json文件中有一个'assets'属性。我的理解是,您可以在AOT

中编译时添加要创建的文件夹
 "assets": [
        "assets",
        "locale/i18n",   //Added this line
        "favicon.ico"
      ],

现在它有效。