我想覆盖“日期”管道并享受全局访问的好处,就像内置管道一样 - 也就是说,避免在每个组件注释中导入和使用pipes []数组。这可能吗?
答案 0 :(得分:15)
是的,您可以使用PLATFORM_PIPES
添加自定义管道并命名管道date
来劫持它。
@Pipe({
name : 'date' // Hijacks the 'date' pipe
})
class CustomDatePipe {
transform(val, args) {
return /* do something new with the value */;
}
}
@Component({
selector: 'my-app',
template : '{{mydate | date}}',
})
export class App {
mydate = Date.now();
}
// Provides the CustomDatePipe globally
bootstrap(App, [provide(PLATFORM_PIPES, {useValue: [CustomDatePipe], multi: true})]);
这样,您不必每次都在组件的pipes
属性中添加指定。
这是一个plnkr,示例有效。
答案 1 :(得分:2)
是的,请按以下方式使用PLATFORM_PIPES
https://angular.io/docs/ts/latest/api/core/index/PLATFORM_PIPES-let.html
import {PLATFORM_PIPES} from '@angular/core';
import {OtherPipe} from './myPipe';
@Component({
selector: 'my-component',
template: `
{{123 | other-pipe}}
`
})
export class MyComponent {
...
}
bootstrap(MyComponent, [{provide: PLATFORM_PIPES, useValue: [OtherPipe], multi:true}]);
答案 2 :(得分:2)
/**
* `AppModule`
*/
@NgModule({
...
providers: [
...
CustomDatePipe
]
})