在 2 个组件中使用 angular 4 个管道
use angular 4 Pipe in 2 component
我有基于组件的 angular4 应用程序,在我使用 DataTable 插件和自定义 DataFilterPipe 的每个组件中,当我像下面这样导入时在每个组件中,我得到的错误是 ERROR Error: Uncaught (in promise): Error: Type DataFilterPipe 是 2 个模块声明的一部分。请考虑将 DataFilterPipe 移动到更高的模块。然后我创建了一个名为 dataFilterModule
的新模块
进口:
import {DataTableModule} from "angular2-datatable";
import {DataFilterPipe} from "../plugins/datatable/datafilterpipe";
import {HttpModule} from "@angular/http";
import {FormsModule} from "@angular/forms";
数据过滤模块:
import {NgModule} from "@angular/core";
import {CommonModule} from "@angular/common";
import {DataTableModule} from "angular2-datatable";
import {DataFilterPipe} from "../plugins/datatable/datafilterpipe";
import {HttpModule} from "@angular/http";
import {FormsModule} from "@angular/forms";
@NgModule({
imports: [
CommonModule,
DataTableModule,
FormsModule,
HttpModule
],
declarations: [
DataFilterPipe
],
exports: [
DataFilterPipe
]
})
export class dataFilterModule {}
然后在我的 AppModule 中导入这个模块但是!!我得到的错误是:
The pipe 'dataFilter' could not be found
我像下面这样添加了导出的dataFilterModule,但是没有任何好消息!
export class dataFilterModule {
static forRoot() {
return {
ngModule: DataFilterPipe,
providers: [],
};
}
}
编辑:
我的自定义过滤器:
import * as _ from 'lodash';
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
if (query) {
return _.filter(array, row=>row.name.indexOf(query) > -1);
}
return array;
}
}
答案是共享模块。查看我几天前回答的
检查后@joshrathke
joshrathke 回答我找到了解决方案。您应该创建 ShareModule 然后导入您的指令、组件或管道并使用它。你应该在你需要的每个组件中导入 ShareModule!
我有基于组件的 angular4 应用程序,在我使用 DataTable 插件和自定义 DataFilterPipe 的每个组件中,当我像下面这样导入时在每个组件中,我得到的错误是 ERROR Error: Uncaught (in promise): Error: Type DataFilterPipe 是 2 个模块声明的一部分。请考虑将 DataFilterPipe 移动到更高的模块。然后我创建了一个名为 dataFilterModule
的新模块进口:
import {DataTableModule} from "angular2-datatable";
import {DataFilterPipe} from "../plugins/datatable/datafilterpipe";
import {HttpModule} from "@angular/http";
import {FormsModule} from "@angular/forms";
数据过滤模块:
import {NgModule} from "@angular/core";
import {CommonModule} from "@angular/common";
import {DataTableModule} from "angular2-datatable";
import {DataFilterPipe} from "../plugins/datatable/datafilterpipe";
import {HttpModule} from "@angular/http";
import {FormsModule} from "@angular/forms";
@NgModule({
imports: [
CommonModule,
DataTableModule,
FormsModule,
HttpModule
],
declarations: [
DataFilterPipe
],
exports: [
DataFilterPipe
]
})
export class dataFilterModule {}
然后在我的 AppModule 中导入这个模块但是!!我得到的错误是:
The pipe 'dataFilter' could not be found
我像下面这样添加了导出的dataFilterModule,但是没有任何好消息!
export class dataFilterModule {
static forRoot() {
return {
ngModule: DataFilterPipe,
providers: [],
};
}
}
编辑: 我的自定义过滤器:
import * as _ from 'lodash';
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
if (query) {
return _.filter(array, row=>row.name.indexOf(query) > -1);
}
return array;
}
}
答案是共享模块。查看
检查后@joshrathke joshrathke 回答我找到了解决方案。您应该创建 ShareModule 然后导入您的指令、组件或管道并使用它。你应该在你需要的每个组件中导入 ShareModule!