在我的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方法的任何代码。