为什么ngx-translate加载整个http响应?

时间:2018-01-09 10:09:37

标签: angular ngx-translate angular-httpclient

出于某种原因,我的Angular 5项目似乎将整个http响应拉入了translationService。有没有人经历过这个?这是一个HttpClient问题吗?

正如您在附图中看到的那样,json内容位于_body属性中,这是不正确的。对我来说,似乎HttpClient在某个地方与{observe: 'response'}一起使用。 ref.

enter image description here

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule, HttpClient } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { AppComponent } from './app.component';

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

@NgModule({
  imports: [
    HttpClientModule,
    TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [HttpClient]
      }
    })
  ],
  declarations: [AppComponent],
  bootstrap: [AppComponent],
})

export class AppModule {
}

app.component.ts

import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private translate: TranslateService) {
    translate.addLangs(["en", "nb"]);
    translate.setDefaultLang('en');
  }
}

版本:

@angular/core@5.1.3
@ngx-translate/core@9.0.2
@ngx-translate/http-loader@2.0.1

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是它能够解决。首先,您必须均衡对应于Angular版本的版本。然后将代码移到基本底部 导出类AppModule {}。这是您必须移动的代码:

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