首页 > 解决方案 > svg“textLength”不适用于角度 7

问题描述

const textElement = document.getElementById("id123");

if(textElement && textElement.textLength.baseVal.value){
    return Math.floor((node.width - textElement.textLength.baseVal.value) /2)
}

textElement.textLength我在角度 7 中执行此操作时显示错误。

错误是:

“HTMLElement”类型上不存在属性“textLength”。

标签: javascriptangularsvgangular7

解决方案


打字稿是类型安全的。所以 document.getElementById() 返回不包含 value 属性的 HTMLElement 类型。然而,子类型 HTMLInputElement 确实包含 value 属性。

因此,一种解决方案是将 getElementById() 的结果转换为 HTMLInputElement ,如下所示:

var temp = (<HTMLInputElement>document.getElementById("id123"));

<> 是打字稿中的强制转换运算符。请参阅问题 TypeScript:casting HTMLElement。

上面一行生成的 javascript 如下所示:

temp = (document.getElementById("id123"));

推荐阅读