Typescript - 'HTMLTableRowElement | 类型的参数null 不可分配给 HTMLElement 类型的参数
Typescript - Argument of type 'HTMLTableRowElement | null is not assignable to parameter of type HTMLElement
在我的 Angular 应用程序中,我试图访问 DOM 以将 table 行滚动到视图中。为此,我创建了一个方法并传入以下参数:
this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index));
显然参数可以为空且未定义,我收到以下打字稿错误:
TS2345: Argument of type 'HTMLTableRowElement | null | undefined' is not assignable to parameter of type 'HTMLElement'. Type 'undefined' is not assignable to type 'HTMLElement'.
方法 scrollIntoView(row: HTMLElement)
接受 HTMLElement 作为输入。 this.tableElement
是一个 HTMLTableElement
。显然问题是我连续传入 this.scrollintoView()
可能为空。
我试图通过简单地将我的方法 this.scrollIntoView()
放入 if 块中来避免这个问题,它会检查参数是否为 null 或未定义:
if (
this.tableElement?.rows.item(this.tableComponent.index) !== null &&
this.tableElement?.rows.item(this.tableComponent.index) !== undefined
) {
嗯。 None 这有帮助。我不知道问题出在哪里,非常感谢您的帮助!
该消息看起来像是基于错误变量类型的编译器消息,所以我认为错误发生在您的条件运行之前。
我怀疑你必须这样做:
scrollIntoView(row: HTMLTableRowElement | null | undefined)
并更改您传递给函数的值,使其不是 HTMLTableElement。
这是一个猜测,因为您没有告诉我们 tableElement
是什么,也没有分享您的滚动方法的任何代码。
我不得不在这样的事情上经常与 TypeScript 作斗争。我通常会这样做:
this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index) as HTMLTableRowElement);
在我的 Angular 应用程序中,我试图访问 DOM 以将 table 行滚动到视图中。为此,我创建了一个方法并传入以下参数:
this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index));
显然参数可以为空且未定义,我收到以下打字稿错误:
TS2345: Argument of type 'HTMLTableRowElement | null | undefined' is not assignable to parameter of type 'HTMLElement'. Type 'undefined' is not assignable to type 'HTMLElement'.
方法 scrollIntoView(row: HTMLElement)
接受 HTMLElement 作为输入。 this.tableElement
是一个 HTMLTableElement
。显然问题是我连续传入 this.scrollintoView()
可能为空。
我试图通过简单地将我的方法 this.scrollIntoView()
放入 if 块中来避免这个问题,它会检查参数是否为 null 或未定义:
if (
this.tableElement?.rows.item(this.tableComponent.index) !== null &&
this.tableElement?.rows.item(this.tableComponent.index) !== undefined
) {
嗯。 None 这有帮助。我不知道问题出在哪里,非常感谢您的帮助!
该消息看起来像是基于错误变量类型的编译器消息,所以我认为错误发生在您的条件运行之前。
我怀疑你必须这样做:
scrollIntoView(row: HTMLTableRowElement | null | undefined)
并更改您传递给函数的值,使其不是 HTMLTableElement。
这是一个猜测,因为您没有告诉我们 tableElement
是什么,也没有分享您的滚动方法的任何代码。
我不得不在这样的事情上经常与 TypeScript 作斗争。我通常会这样做:
this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index) as HTMLTableRowElement);