I have a very simple angular filter.
This filter takes the input of the enum element (called XEnum here) and returns a string that represents the member in the enumeration:
module Filters { "use strict"; export function XEnumToStringFilter() { return ( input: XEnum ) => { return XEnum[input]; } } } [...] module Model { export enum XEnum{ Started = 0, Stopped = 1 } } [...] app.filter( "xEnumToStringFilter", [Filters.XEnumToStringFilter] );
This works very well when I use xEnumToStringFilter in my views:
{{0 | etatTransfertEnumToStringFilter}} {{0 | etatTransfertEnumToStringFilter}} print Started
{{1 | etatTransfertEnumToStringFilter}} {{1 | etatTransfertEnumToStringFilter}} print Stopped
But I want to use this filter in my service:
app.service( "serviceUsingXEnum", ["xEnumToStringFilter", Services.ServiceUsingXEnum] );
But in my service constructor, I get a strange error:
module Services { "use strict"; export class ServiceUsingXEnum { constructor( private xEnumToStringFilter: Filters.XEnumToStringFilter // error here ) {
Filters module does not have exported XEnumToStringFilter element
Even when my autocomplete says it exists!
I want to use dependency injection, I could just do Filters.XEnumToStringFilter()(somethingXEnum) , but it's bad!
Why can't I use XEnumToStringFilter as a type?
What is the best way to solve this problem?