2017-05-02 13 views
0

は、私はこのような@MinDate制約で飾られているクラスがあります。実行時にTypescriptデコレータオブジェクトの値を渡すことはできますか?

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? 

答えて

2

いいえ、できません。
デコレータ機能が呼び出されたときに、thisが存在しないことを意味するデコレータはクラスに適用され、インスタンスには適用されません。静的な値が動作する使用

@MinDate(new Date(12/22/2017)); 

しかし、あなたはそれのためのインスタンスメンバーを使用することはできません。

あなたはデコレータなしコンストラクタでそれを行うことができます。

export default class Order { 
    ... 
    constructor() { 
     this.purchaseDate = ... 
     this.receiptDate = this.purchaseDate; 
    } 
} 
関連する問題