Ole*_*Ole 5 typescript ecmascript-6 typescript2.2 class-validator
我有一个用 @MinDate 约束装饰的类,如下所示:
export default class Order {
purchaseDate: Date;
@MinDate(this.purchaseDate)
receiptDate: Date;
}
Run Code Online (Sandbox Code Playgroud)
当尝试验证其实例Order是否有效时,会出现验证错误。我的问题是是否可以/有效地将其this.purchaseDate作为参数传递给@MinDate()装饰器。
换句话说,打字稿装饰器可以从对象接收运行时值,还是这些值必须在编译时可用?例如:
@MinDate(new Date(12/22/2017)); //This should work?
@MinDate(this.someDate) // This will never work?
Run Code Online (Sandbox Code Playgroud)
不,你不能那样做。
装饰器应用于类而不是实例,这意味着this调用装饰器函数时不存在装饰器。
使用静态值将起作用:
@MinDate(new Date(12/22/2017));
Run Code Online (Sandbox Code Playgroud)
但您不能为其使用实例成员。
您可以在不使用装饰器的构造函数中执行此操作:
export default class Order {
...
constructor() {
this.purchaseDate = ...
this.receiptDate = this.purchaseDate;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4737 次 |
| 最近记录: |