0

我正在尝试在同一个项目中同时使用 ngx-restangular 1.0.11 和 @ngx-translate 7.0.0。但是,我一次只能让其中一个工作。我将日志语句放在导入期间调用的每个工厂中,并且一次只调用其中一个。我很困惑!有没有人在 Angular 4 中成功使用过这两种方法?

这是一个试图将它们都包含在内的 plunker。https://plnkr.co/edit/ecefQcRHV3q5UTZa5H8q?p=preview。如果不包括另一个,则每个都可以工作,但是通过将它们都放在应用程序中,只有一个可以工作。(我还没有找到一种一致的方法来让它切换到另一个——仅仅注释掉一个正在工作的并不总是让另一个开始工作)

这是我的app.ts文件(模块文件):

import { Component, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule, BaseRequestOptions, Http } from '@angular/http';
import { RouterModule } from '@angular/router';
import { MockBackend } from '@angular/http/testing';
import { RestangularModule } from 'ngx-restangular';
import { MissingTranslationHandler, TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';

import { App } from './app.component.ts';
import { routes } from './app.routes.ts';
import { MyMissingTranslationHandler } from './my-missing-translation-handler';

export function HttpLoaderFactory(http: Http) {
  console.log("in translator config");
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

export function RestangularConfigFactory (RestangularProvider) {
  console.log("in restangular config");
  RestangularProvider.setRestangularFields({
    id: "_id"
  });
}

@NgModule({
  declarations: [App],
  imports: [
    BrowserModule,
    HttpModule,
    RouterModule.forRoot(routes),
    RestangularModule.forRoot(RestangularConfigFactory),
    TranslateModule.forRoot({
      missingTranslationHandler: {
        provide: MissingTranslationHandler,
        useClass: MyMissingTranslationHandler
      },
      loader: {
        provide: TranslateLoader,
        useFactory: HttpLoaderFactory,
        deps: [Http]
      }
    }),
  ],
  providers: [],
  bootstrap: [App]
})
export class AppModule {}

谢谢你的帮助!

4

1 回答 1

0

问题一定与缓存或以某种方式构建有关。我最终在我的项目中留下了restangular和翻译代码,最终他们都开始工作了。不过,它不像重新启动ng serve(我正在使用 angular-cli)或刷新我的浏览器那么简单。我不确定是什么最终触发了修复它,但问题的答案是肯定的,它们都可以在同一个项目中工作!

于 2017-06-22T00:26:05.387 回答