打字稿 - 类型为"HTMLTableRowElement |null 不可分配给 HTML 类型的参数。



在我的Angular应用程序中,我试图访问DOM来滚动表行到视图中。为此,我创建了一个方法并传入以下参数:

this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index));

显然参数可以为空和未定义,我得到以下typescript错误:

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块来避免这个问题,if块检查参数是否为空或未定义:

if (
this.tableElement?.rows.item(this.tableComponent.index) !== null &&
this.tableElement?.rows.item(this.tableComponent.index) !== undefined
) {

。这些都无济于事。我不知道是什么问题,希望你能帮助我!

我必须经常在这样的事情上与TypeScript作斗争。我通常会这样做:

this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index) as HTMLTableRowElement);

该消息看起来像是基于不正确的变量类型的编译器消息,因此我认为错误发生在您的条件运行之前。

我怀疑你必须这样做:

scrollIntoView(row: HTMLTableRowElement | null | undefined)

并更改传递给函数的值,使其不是htmlableelement。

这是一个猜测,因为你没有告诉我们tableElement是什么,也没有分享你的scroll方法的任何代码。

相关内容

最新更新