我有一个装饰模型类:
@Api('payments/deposit')
export class DepositsModel {
public id: number;
public created_at: Date;
...
在角度组件构造函数中,我注入指向使用我的模型类的数据服务:
...
public constructor(
private $api: GridApiService<DepositsModel>
...
) {
this.service = new GridService($api);
...
}
...
所以,我的酷组件有一个很酷的服务,巫婆知道它使用的数据类型......
应该知道..
但是如何在GridApiService中获取模型的元数据呢?我试过了:
@Injectable()
export class GridApiService<T>{
constructor(
$http: HttpClient,
) {
let api = Reflect.getMetadata('Api', T);
}
得到错误消息:&#39; T&#39;仅指类型,但在此处用作值。
更新
你能否告诉我另一种将初始化数据传递给我的GridApiService的方法,应该通过DI注入,而不是用new关键字创建?
答案 0 :(得分:5)
TypeScript类型在运行时不存在,但可以通过类装饰器作为元数据发布的类型除外。 Angular DI存在通用类型cannot be emitted并且不存在。除了类型检查之外,GridApiService
并不重要。
DepositsModel
和class DepositsGridApiService extends GridApiService {
Model = DepositsModel;
}
之间的联系应该用类设计来表达,例如继承:
{{1}}