Angular2 RC6管道.我可以在与我的组件相同的.ts文件中声明管道吗?

roo*_*ook 4 angular

我是否必须在@ngModule中注册每个管道?我有一个仅由单个特定组件使用的.很高兴在同一个文件中声明它,所以没有其他人知道它.我相信之前有可能 - 只是找不到合适的语法.

谢谢.

Bee*_*ice 7

必须在模块中声明每个管道,组件和指令.这是因为编译器依赖于模块的声明来解析模板.如果MyPipe在模块的声明(或导入模块的声明)中没有看到,那么在模板中使用管道时它不会查找它也不会识别它

如果没有其他组件能够看到您的管道很重要,请创建一个仅包含使用管道和管道本身的组件的模块,并且不要导出管道.

import { NgModule }      from '@angular/core';
import { CommonModule }  from '@angular/common';
import { MyPipe }        from './my.pipe';
import { MyComponent }   from './my.component';

@NgModule({
  imports:      [ CommonModule ],
  declarations: [ MyComponent, MyPipe ],
  exports:      [], // don't export what you want to keep private
  providers:    []
})
export class MyModule { }
Run Code Online (Sandbox Code Playgroud)