Typescript";这";问题
我是打字新手。正在尝试为html表单创建抽象类。我想在表单提交上执行一些自定义代码。因此,将函数分配给this.onsubmit。问题是,submit方法要求第一个参数是“this”,但我也需要“this”来访问类成员Typescript";这";问题,typescript,this,Typescript,This,我是打字新手。正在尝试为html表单创建抽象类。我想在表单提交上执行一些自定义代码。因此,将函数分配给this.onsubmit。问题是,submit方法要求第一个参数是“this”,但我也需要“this”来访问类成员 export abstract class AbstractForm { protected form: HTMLFormElement; constructor(form: HTMLFormElement) { this.form = form; this
export abstract class AbstractForm {
protected form: HTMLFormElement;
constructor(form: HTMLFormElement) {
this.form = form;
this.form.onsubmit = this.Submit;
}
private Submit(this: HTMLElement, ev: Event) {
if (this.PreSubmissionValidation()) { // Error
// Some code
}
ev.preventDefault();
}
abstract PreSubmissionValidation(): boolean;
abstract OnSuccess(): any;
abstract OnError(): any;
}
可以做一些像这样丑陋的事情:
private readonly Submit = (() => {
const instance = this;
return function (this: HTMLElement, ev: Event) {
if (instance.PreSubmissionValidation()) {
}
}
})();
“this”非常棒。工作非常完美。实际上,这不会工作,
这个
参数被TypeScript编译器删除。看到我的答案了。@Tao:我检查了编译后的代码,它运行得很好。是的,你说得对,对不起。。。我今天不应该发帖了,我这边已经犯了第二个错误了……那就装订怎么样this.form.onsubmit=this.Submit.bind(this)代码>?我建议不要调用您的第一个参数this
——这非常令人困惑,因为在AbstractForm
的上下文中,它不是this
的值。我真的很好奇为什么有一个参数必须称为this?哪位技术负责人会让这一切发生?