我想重写“日期”管道并享受全局访问的好处,就像内置管道一样,避免在每个组件注释中导入和使用管道数组。这可能吗?是否有可能重写内置的Angular 2管道,以便它们可以在全球范围内使用?
8
A
回答
14
是的,您可以使用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与一个例子工作。
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}]);
1
埃里克·马丁内斯的回答工作正常!请记住,PLATFORM_PIPES在Angular4中已弃用。 Angular4中的平台管道通过app.modules进行配置:
/**
* `AppModule`
*/
@NgModule({
...
providers: [
...
CustomDatePipe
]
})
+0
为了测试(回答Vilmantas Baranauskas的问题):你可以为管道本身编写一个测试,并在你的测试中明确地调用变换,例如新的CustomDatePipe()。transform(输入) –
相关问题
- 1. 在哪里注册Angular 2服务,以便它可以在全球范围内使用?
- 2. 在Rails应用程序中放置自定义类的位置,以便它们在全球范围内可用?
- 3. 是否可以在全球范围内更改Windows IME?
- 4. 是否可以使用Tumblr API在全球范围内搜索Tumblr?
- 5. 是否可以在全局范围内设置qmake调试?
- 6. 我该如何改进这个ajax调用,以便它可以在全球范围内使用?
- 7. 是否有可能在全球范围内记录所有Guzzle请求?
- 8. 功能内的用户输入,我可以使它'全球'?
- 9. 可以在全球范围内设定“假设新”吗?
- 10. CLGeocoder可以在全球范围内工作,超越美国吗?
- 11. 是否有可能在全球范围内检测键盘焦点事件?
- 12. 是否有API可以在全球范围内获得接收“指针位置”或“触摸位置”?
- 13. 我可以让我的MySQL不在本地而是在全球范围内
- 14. 测试Android应用程序是否可在全球范围内使用
- 15. 对象不能在全球范围内创建,但可以在本地蟒蛇
- 16. jQuery FullCalendar:我可以突出显示一些时间范围,以便用户知道它们是可选的吗?
- 17. 是否可以重写内联函数?
- 18. 是否可以使用egrep来匹配范围内的数字?
- 19. 如何让我的功能可见在全球范围内
- 20. 这在全球范围内
- 21. 如何知道Octave是否可以完全访问64位内存范围
- 22. 如何防止在全球范围内重复使用内容
- 23. 我在应用程序的每个页面上都有一个组件。我如何声明它,以便它可以在全球范围内使用?
- 24. 我可以返回内置管道吗?
- 25. 在Angular 2的代码中可以使用管道吗?
- 26. 是否有可能使php全局在函数范围内自动提供?
- 27. 全球范围内VS文件范围
- 28. 在全球范围内设置特定时区以供应用程序使用
- 29. 我可以在全球范围内更改Symfony的视图后缀吗?
- 30. 是否可以安全使用SimpleAudioEngine的音量范围?
您是否知道需要做什么以便管道在单元测试中也是全局可用的? –