2016-11-10 27 views
2

我有一個使用translateService一個組成部分,但它不是可以翻譯與部件模板HTML管道項目,我得到以下錯誤:角2.0翻譯管找不到

The pipe 'translate' could not be found

應用。 module.ts

import {BrowserModule} from "@angular/platform-browser"; 
import {NgModule} from "@angular/core"; 
import {HttpModule, Http} from "@angular/http"; 
import {TranslateModule, TranslateLoader, TranslateStaticLoader} from 'ng2-translate'; 
import {AppComponent} from "./app.component"; 

@NgModule({ 
declarations: [AppComponent], 
imports: [ 
BrowserModule, 
HttpModule, 
TranslateModule.forRoot({ 
    provide: TranslateLoader, 
    useFactory: (http: Http) => new TranslateStaticLoader(http, './assets/i18n', '.json'), 
    deps: [Http] 
    }) 
], 
bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

booking.component.ts

import {Component, OnInit} from '@angular/core'; 
import {BookingComponent} from './booking.component'; 
import {TranslateService} from 'ng2-translate'; 

@Component({ 
    selector: 'app-booking', 
    templateUrl: './booking.component.html', 
    styleUrls: ['./booking.component.css'] 
}) 

export class BookingComponent implements OnInit { 
    constructor(private translate: TranslateService 
) { 
    translate.setDefaultLang('de'); 
    translate.use('de'); 
}; 

ngOnInit() { 
} 
} 

booking.component.html

<p>{{'TESTKEY' | translate }}</p> 

與組件上的服務的翻譯工作正常,但我還需要翻譯與管HTML

回答

18

您需要imports: [ TranslateModule ]成任何模塊BookingComponent的聲明中,其中進口的應用模塊僅使管道可用於在該模塊中聲明的組件。但提供商/服務是從模塊全球註冊(不像組件,指令和管道)

+0

大加讚賞,我不知道爲什麼這一切是不是自述文件,我得到的是具體納克,但對於初學者這爲我們節省了大量的時間。 – prasanthv

-1

是做什麼@peeskillet說,但如果你需要在多個模塊中使用管道,那麼你將需要一個共享模塊。如果使用共享模塊,則需要將導入到共享模塊的模塊導出。

2

對於那些跨越這個未來,這裏有你需要簡而言之做來解決這個問題

  1. 中所有步驟都沿着翻譯模塊邏輯在app.module翻譯裝載機和translateFactory存在。 TS

    TranslateModule.forRoot({ provide: TranslateLoader, useFactory: (http: Http) => new TranslateStaticLoader(http, './assets/i18n', '.json'), deps: [Http] }) ],

  2. 在你shared.module.ts(或任何其他模塊),導入和導出轉換模塊。
    即:翻譯模塊應該是導入和導出數組的一部分。 SO和github中的大多數答案都提到導入模塊但不導出它。

    @NgModule({ imports: [ // other imported modules here TranslateModule ], exports: [ // other exported modules here TranslateModule]

+0

該文檔僅建議在使用** SharedModule **時必須導出** TranslateModule **。沒有提及必須添加到根模塊的輸出(即,AppModule)。 雖然添加到出口得到了** translate **管道爲我工作。 參考ngx-translate文檔: https://github.com/ngx-translate/core#1-import-the-translatemodule –