Использовать угловой 4 трубы в 2 компонента

У меня есть приложение компонента angular4, и в каждом компоненте я использую плагин DataTable и пользовательский DataFilterPipe, когда я импортирую, как показано ниже, в каждом компоненте ошибка, которую я получаю, является ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: Тип 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";

dataFilterModule:

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;
  }
 }

2 ответа

Решение

Ответ - общий модуль. Проверьте этот подобный пост, на который я ответил несколько дней назад.

После проверки ответа joshrathke joshrathke я нашел решение. Вы должны создать ShareModule, затем импортировать свою Директиву, компонент или трубы и использовать их. Вы должны импортировать ShareModule в каждый компонент, который вам нужен!

Другие вопросы по тегам