Typescript";这";问题

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

我是打字新手。正在尝试为html表单创建抽象类。我想在表单提交上执行一些自定义代码。因此,将函数分配给this.onsubmit。问题是,submit方法要求第一个参数是“this”,但我也需要“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?哪位技术负责人会让这一切发生?