2016-11-10 88 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 –