我正在将我的应用程序分解为模块,但是我遇到了一些管道问题,我需要在应用程序中使用一些管道。
我尝试制作自己的管道模块,但这似乎没有按预期工作。
这就是我所做的。
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;
}
}