我想重寫「日期」管道並享受全局訪問的好處,就像內置管道一樣,避免在每個組件註釋中導入和使用管道數組。這可能嗎?是否有可能重寫內置的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的音量範圍?
您是否知道需要做什麼以便管道在單元測試中也是全局可用的? –