我有一个装饰模型类:
@Api('payments/deposit')
export class DepositsModel {
public id: number;
public created_at: Date;
...
在 Angular 组件构造函数中,我正在注入(inject)指向使用我的模型类的数据服务:
...
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);
}
并得到错误消息:'T' 仅指一种类型,但在此处用作值。
更新
您能否建议我另一种将初始化数据传递给我的 GridApiService 的方法,女巫应该通过 DI 注入(inject),而不是使用 new 关键字创建?
最佳答案
TypeScript 类型在运行时不存在,除了那些可以通过类装饰器作为元数据发出的类型。通用类型 cannot be emitted Angular DI 不存在。 GridApiService<DepositsModel>
除了类型检查之外什么都不重要。
GridApiService
之间的联系和一个 DepositsModel
应该用类设计来表达,比如继承:
class DepositsGridApiService extends GridApiService {
Model = DepositsModel;
}
关于angular - 我可以在 typescript 中获取通用类型的元数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167201/