2017-04-24 7 views
1

Angular 4とngx-translateの新機能です。私は特定のJSONファイルをすべてのモジュールにロードする方法を探しています。私app.module.tsでJSON-Filesモジュールをロードするにはどうすればいいですか? Angular 4 - ngx-translate

このコードは、各言語のJSONファイルをロードします。

TranslateModule.forChild({ 
    loader: { 
    provide: TranslateLoader, 
    useFactory: HttpLoaderFactory, 
    deps: [Http] 
    } 
}), 

export function HttpLoaderFactory(http: Http) { 
    console.log('aiaiaiaiaiaia'); 
    return new TranslateHttpLoader(http, 'src/app/i18n/', '.json'); 
} 

しかし、別のモジュールでこのコード:

TranslateModule.forChild({ 
    loader: { 
    provide: TranslateLoader, 
    useFactory: HttpLoaderFactory, 
    deps: [Http] 
    } 
}), 

export function HttpLoaderFactory(http: Http) { 
    console.log('jojojojojojojo'); 
    return new TranslateHttpLoader(http, 'src/app/cca-campaign-module/i18n/', '.json'); 
} 

このコードが実行されますされません。 ..

これが機能しない理由は何ですか?

+0

この質問は既に[こちら](https://stackoverflow.com/questions/45980408/use-ngx-translate-in-a-multi-module-angular-setup-and-child-libraries)と[github](https://github.com/ngx-translate/core/issues/592)ですが、答えはありません。私は実際に同じ問題に直面しており、 'forChild'はLazyのロードされたモジュールのみであり、メインの' app.module.ts'に既に含まれているモジュールではありません。 – Guillaume

答えて

0

ディレクトリあなたはngの新しいYourAppname-で生成している場合は、この資産のディレクトリは「アプリ」ディレクトリと同じ行に存在し、サービスが子ディレクトリでなければならないこと

ノート(アプリのディレクトリに平行)資産にファイルを保管してくださいアプリディレクトリの。以下のように次のようになります。

::アプリ/サービス/ myservice.ts

getOrderSummary():観測可能な{

// get users from api 
    return this.http.get('assets/ordersummary.json')//, options) 
     .map((response: Response) => { 
      console.log("mock data" + response.json()); 
      return response.json(); 
     } 
     ) 
     .catch(this.handleError); 
} 
+0

私はあなたがより完全な答えとコードを提供するべきだと思います。これは問題を解決するのに全く役に立たないので、 – Guillaume

-1

私も同じ現象が発生しています。

あなたのapp.module.tsでは、forChild(..)ではなく.forRoot(..)を使用することをお勧めします。この変更を行っても、モジュールをロードするときに子モジュール固有の変換JSONは取得されませんでした。アプリケーションモジュールではなく子モジュールの一部として "isolated:true"を指定すると、翻訳JSONが取得されますが、モジュールに分離されているため、翻訳モジュールに統合されません。これには、モジュール変換JSONの両方に共通の翻訳が含まれている必要があります。これが仕様であるかどうかは不明です。

私が遭遇した場合、私はこれ以上の発見を共有します。

+1

これは答えではありません。同じものを持つ他の誰かを助けるものではないので、問題 – Guillaume

関連する問題