これは、私がアクティブにしている別の質問と非常によく似ていますが、別の質問として質問することもできますし、別の聴衆に役立つかもしれません.
ノックアウト検証のカスタム ルールがあります。
ko.validation.rules["sameAs"] = {
validator: function (val, otherObservable) {
return val === otherObservable();
},
message: "Value should be same as {0}, but differs"
};
生のJavaScriptでは、使用法が次のようになるため、これは正常に機能しました。
function SomeObject() {
this.Email = ko.observable().extend({ required: true, email: true });
this.ConfirmationEmail = ko.observable().extend({ required: true, email: true, sameAs: this.Email });
}
ただし、これを書き込もうとすると、Typescript ランドで次のようになります。
class SomeObject {
public Email = ko.observable().extend({ required: true, email: true });
public ConfirmationEmail = ko.observable().extend({ required: true, email: true, sameAs: this.Email });
}
エラーが表示されます:
キーワード 'this' は、クラス本体の初期化子、またはスーパー コンストラクター呼び出しでは参照できません
これは理にかなっていますが、コンストラクターなどにハックしようとしない限り、元々行っていたことをどのように行うことができるかわかりません。これにより、クラスが少し恐ろしく見えます。