制作自定义管道模块

时间:2017-04-30 08:18:55

标签: angular angular-module angular-pipe

我正在将我的应用程序分解为模块,但是我遇到了一些管道问题,我需要在应用程序中使用一些管道。

我尝试制作自己的管道模块,但这似乎没有按预期工作。

这就是我所做的。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import {GetCountPipe} from "./get-count.pipe";
import {TruncateWordsPipe, TruncateCharactersPipe} from "./truncate.pipe";
import {FilterStatusPipe} from "./filter-status.pipe";

@NgModule({
  imports: [
    CommonModule,
  ],
  declarations: [
    GetCountPipe,
    TruncateCharactersPipe,
    TruncateWordsPipe,
    FilterStatusPipe
  ],
  exports: [
    GetCountPipe,
    TruncateCharactersPipe,
    TruncateWordsPipe,
    FilterStatusPipe
  ]
})
export class UpPipesModule { }

我希望能够将其导入我的GlobalsModule,这样我只需要导入一次,然后导入我导入的所有地方GlobalsModule我也可以访问UpPipesModule中的所有管道{1}}

错误: 当我将GlobalModules添加到我导入它的模块时,简单地说我的管道似乎没有被加载。因此我收到以下错误。

fs.js:106 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
    at TruncateCharactersPipe.webpackJsonp.888.TruncateCharactersPipe.transform (truncate.pipe.ts:13)

至于我想要发生什么。我希望我的管道加载到我可以包含在GlobalModule内的单个模块中,然后我可以将其导入到我的应用程序子模块中,每个模块代表应用程序的一部分。

管道导致错误:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'truncate'
})
export class TruncateCharactersPipe implements PipeTransform {
  transform(value: string, limit: number = 40, trail: String = '…'): string {
    if (limit < 0) {
      limit *= -1;
      return value.length > limit ? trail + value.substring(value.length - limit, value.length) : value;
    } else {
      return value.length > limit ? value.substring(0, limit) + trail : value;
    }
  }
}

@Pipe({
  name: 'words'
})
export class TruncateWordsPipe implements PipeTransform {
  transform(value: string, limit: number = 40, trail: String = '…'): string {
    let result = value;

    if (value) {
      let words = value.split(/\s+/);
      if (words.length > Math.abs(limit)) {
        if (limit < 0) {
          limit *= -1;
          result = trail + words.slice(words.length - limit, words.length).join(' ');
        } else {
          result = words.slice(0, limit).join(' ') + trail;
        }
      }
    }

    return result;
  }
}

0 个答案:

没有答案