4

メインアプリとは異なる他のコンポーネントのために、Angular 2 RC5 に ng2-translate を統合する際に問題が発生しています。

パイプをグローバルに使用したいのですが、調査の結果、おそらく「プロバイダー」を使用する必要があることがわかりました(ただし、それはRC4にあります)。その後、「宣言」を使用する必要があることがわかりました。何か案は?

いつものように...助けてくれてありがとう!

テンプレートファイルで使用すると、次のようになります。

{{ 'HOME.TITLE' | 翻訳 }}

ブラウザで次のエラーが表示されます。

The pipe 'translate' could not be found ("<h1>title test</h1>
<h2>[ERROR ->]{{ 'HOME.TITLE' | translate }}</h2>

これは私の main.ts ファイルです:

// The browser platform with a compiler
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

// The app module
import { AppModule } from './app.module';

// Compile and launch the module
platformBrowserDynamic().bootstrapModule(AppModule);

メイン モジュール ファイル:

import {TranslateModule, TranslateService} from "ng2-translate/ng2-translate";


@NgModule({
 imports: [
   BrowserModule,
   HttpModule,
   RouterModule.forRoot(routes),
   AboutModule,
   HomeModule,
   SharedModule.forRoot(),
   TranslateModule.forRoot()
  ],
 declarations: [AppComponent],
 providers: [{
    provide: APP_BASE_HREF,
    useValue: '<%= APP_BASE %>'
  }],
 bootstrap: [AppComponent]
})

export class AppModule { }
4

3 に答える 3

4

shared.module を使用して TranslatePipe をエクスポートします。

shared.module.ts

// ライブラリ

// libs
import { NgModule, ModuleWithProviders }       from '@angular/core';
import { CommonModule }   from '@angular/common';
import { TranslateModule, TranslatePipe } from 'ng2-translate/ng2-translate';

@NgModule({
    imports: [
        CommonModule,
        TranslateModule
    ],
    declarations: [

    ],
    exports: [
        CommonModule,
        TranslateModule,
        TranslatePipe
    ]
})
export class SharedModule {

    static forRoot(): ModuleWithProviders {
        return {
            ngModule: SharedModule
        };
    }
}

于 2016-08-24T03:46:59.013 に答える