我有一个用 @MinDate 约束装饰的类,如下所示:
export default class Order {
purchaseDate: Date;
@MinDate(this.purchaseDate)
receiptDate: Date;
}
当尝试验证有效的
Order
实例时,验证错误会出现。我的问题是将 this.purchaseDate
作为参数传递给 @MinDate()
装饰器甚至可能/有效。换句话说, typescript 装饰器可以从对象接收运行时值,还是这些值必须在编译时可用?例如:
@MinDate(new Date(12/22/2017)); //This should work?
@MinDate(this.someDate) // This will never work?
最佳答案
不,你不能那样做。
装饰器应用于类而不是实例,这意味着在调用装饰器函数时没有 this
。
使用静态值将起作用:
@MinDate(new Date(12/22/2017));
但是您不能为它使用实例成员。
你可以在没有装饰器的构造函数中做到这一点:
export default class Order {
...
constructor() {
this.purchaseDate = ...
this.receiptDate = this.purchaseDate;
}
}
关于typescript - 是否可以在运行时传递 Typescript 装饰器对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742615/