Angular 找不到翻译管道
Angular translate Pipe could not be found
我有一个使用 translateService 的组件,但无法使用组件模板上的管道翻译项目 HTML,我收到以下错误:
The pipe 'translate' could not be found
app.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
您需要 imports: [ TranslateModule ]
到声明 BookingComponent
的任何模块。app 模块中的导入仅使管道可用于该模块中声明的组件。但是 providers/services 是从模块全局注册的(不像组件、指令和管道)
对于那些遇到这个问题的人,这里是您需要执行的简单步骤来解决这个问题
- app.module.ts
中存在翻译模块逻辑以及翻译加载器和 translateFactory
TranslateModule.forRoot({
provide: TranslateLoader,
useFactory: (http: Http) =>
new TranslateStaticLoader(http, './assets/i18n', '.json'),
deps: [Http]
})
],`
- 在您的 shared.module.ts(或任何其他模块)中,导入和导出翻译模块。
即:翻译模块应该是导入和导出数组的一部分。 SO 和 github 中的大多数答案都提到导入模块而不是导出它。
@NgModule({
imports: [
// other imported modules here
TranslateModule
],
exports: [
// other exported modules here
TranslateModule]`
翻译模块:将翻译器用作管道(在模板上)
import { TranslateModule } from '@ngx-translate/core';
imports: [
CommonModule,
RouterModule, //Router Module
TranslateModule //Translate Module**
]
我正在使用 Ionic 5。我的 HTML 在 home.page.html
<h2 > {{'HOME.title' | translate }}</h2>
我遇到了错误
The pipe 'translate' could not be found
在 Visual Studio 代码中标记为红色错误。但无论如何,Ionic 应用程序都在使用 ionic serve 进行编译,并且翻译工作正常。
无论如何我设法消除了错误。正如上面已经提到的,一些指南并不强调导出模块也很重要。就我而言 home.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
import {TranslateModule} from '@ngx-translate/core'; //IMPORT THE MODULE IN ANY PAGE
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
HomePageRoutingModule,
TranslateModule //IMPORT THE MODULE
],
declarations: [HomePage],
exports:[TranslateModule], //REMEMBER TO ADD THIS TO EXPORT IT AS WELL!!!
})
export class HomePageModule {}
我只在一个“页面”上遇到过这个问题。如果缺少包含翻译管道的组件的声明,它也不会找到它。
const routes: Routes = [
{
path: '',
component: InventoryPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes),
SharedComponentModule
],
declarations: [
InventoryPage // << Check your declaration
]
})
export class InventoryPageModule {}
我有一个使用 translateService 的组件,但无法使用组件模板上的管道翻译项目 HTML,我收到以下错误:
The pipe 'translate' could not be found
app.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您需要 imports: [ TranslateModule ]
到声明 BookingComponent
的任何模块。app 模块中的导入仅使管道可用于该模块中声明的组件。但是 providers/services 是从模块全局注册的(不像组件、指令和管道)
对于那些遇到这个问题的人,这里是您需要执行的简单步骤来解决这个问题
- app.module.ts 中存在翻译模块逻辑以及翻译加载器和 translateFactory
TranslateModule.forRoot({
provide: TranslateLoader,
useFactory: (http: Http) =>
new TranslateStaticLoader(http, './assets/i18n', '.json'),
deps: [Http]
})
],`
- 在您的 shared.module.ts(或任何其他模块)中,导入和导出翻译模块。
即:翻译模块应该是导入和导出数组的一部分。 SO 和 github 中的大多数答案都提到导入模块而不是导出它。
@NgModule({
imports: [
// other imported modules here
TranslateModule
],
exports: [
// other exported modules here
TranslateModule]`
翻译模块:将翻译器用作管道(在模板上)
import { TranslateModule } from '@ngx-translate/core';
imports: [
CommonModule,
RouterModule, //Router Module
TranslateModule //Translate Module**
]
我正在使用 Ionic 5。我的 HTML 在 home.page.html
<h2 > {{'HOME.title' | translate }}</h2>
我遇到了错误
The pipe 'translate' could not be found
在 Visual Studio 代码中标记为红色错误。但无论如何,Ionic 应用程序都在使用 ionic serve 进行编译,并且翻译工作正常。
无论如何我设法消除了错误。正如上面已经提到的,一些指南并不强调导出模块也很重要。就我而言 home.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
import {TranslateModule} from '@ngx-translate/core'; //IMPORT THE MODULE IN ANY PAGE
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
HomePageRoutingModule,
TranslateModule //IMPORT THE MODULE
],
declarations: [HomePage],
exports:[TranslateModule], //REMEMBER TO ADD THIS TO EXPORT IT AS WELL!!!
})
export class HomePageModule {}
我只在一个“页面”上遇到过这个问题。如果缺少包含翻译管道的组件的声明,它也不会找到它。
const routes: Routes = [
{
path: '',
component: InventoryPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes),
SharedComponentModule
],
declarations: [
InventoryPage // << Check your declaration
]
})
export class InventoryPageModule {}