Ant*_*EVE 6 javascript angularjs typescript
我有一个非常简单的角度滤波器.
此过滤器接受输入枚举的成员(此处称为XEnum)并返回表示枚举中成员的字符串:
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] );
Run Code Online (Sandbox Code Playgroud)
当我在视图中使用xEnumToStringFilter时,这非常有效:
{{0 | etatTransfertEnumToStringFilter}}
打印 Started
{{1 | etatTransfertEnumToStringFilter}}
打印 Stopped
但我想在我的服务中使用此过滤器:
app.service( "serviceUsingXEnum",
["xEnumToStringFilter",
Services.ServiceUsingXEnum] );
Run Code Online (Sandbox Code Playgroud)
但在我的服务构造函数中,我只得到一个奇怪的错误:
module Services {
"use strict";
export class ServiceUsingXEnum {
constructor(
private xEnumToStringFilter: Filters.XEnumToStringFilter // error here
) {
// some beautiful code ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
模块
Filters
没有导出成员XEnumToStringFilter
即使我的自动完成说它存在!
我想使用依赖注入,我可以做,Filters.XEnumToStringFilter()(somethingXEnum)
但那很糟糕!
为什么我不能将XEnumToStringFilter用作类型?
有什么更好的解决方法?
那是因为您使用该函数作为类型声明。您可以:
1)更改服务的构造函数声明:
constructor(private xEnumToStringFilter: ( enum: XEnum ) => string )
或者
2)创建一个接口并在要使用过滤器的地方使用它的接口:
module Filters {
"use strict";
export interface IXEnumToStringFunction {
( input: XEnum ) => string
}
export function XEnumToStringFilter() {
return ( input: XEnum ) => {
return XEnum[input];
}
}
}
Run Code Online (Sandbox Code Playgroud)
...
然后在构造函数中
constructor(private xEnumToStringFilter: Filters.IXEnumToStringFunction )
归档时间: |
|
查看次数: |
5806 次 |
最近记录: |