html - Angular HTML 类型推断没有按我的意愿工作
问题描述
在 Angular 组件内部,我想通过 id 或类来获取 div 元素
这个作品
menuDisplayDiv = document.getElementsByClassName("some_class")[0] as HTMLDivElement;
menuDisplayDiv = document.getElementById("some_Id") as HTMLDivElement;
menuDisplayDiv = document.getElementsByClassName("some_class")[0] as HTMLDElement;
menuDisplayDiv = document.getElementById("some_Id") as HTMLElement;
menuDisplayDiv: HTMLElement = document.getElementById("some_Id");
这不起作用
menuDisplayDiv: HTMLDivElement = document.getElementsByClassName("some_class")[0];
menuDisplayDiv: HTMLElement = document.getElementsByClassName("some_class")[0];
menuDisplayDiv: HTMLDivElement = document.getElementById("some_Id");
src/app/action-button-plugin/action-button-plugin.component.ts:62:11 中的错误 - 错误 TS2741:“HTMLElement”类型中缺少“对齐”属性,但“HTMLDivElement”类型中是必需的。
62 let menuDisplayDiv: HTMLDivElement = document.getElementById("menu01") ;
~~~~~~~~~~~~~~
../node_modules/typescript/lib/lib.dom.d.ts:6546:5
6546 align: string;
~~~~~
'align' is declared here.
或显示
src/app/action-button-plugin/action-button-plugin.component.ts:63:11 中的错误 - 错误 TS2740:“元素”类型缺少“HTMLDivElement”类型中的以下属性:align、accessKey、accessKeyLabel、自动大写,还有 107 个。
请有人解释,谢谢你提前
解决方案
对于这个声明:
menuDisplayDiv = document.getElementsByClassName("some_class")[0] as HTMLDivElement;
在右侧,您正在进行类型转换,因此它正在工作。
对于这个声明:
menuDisplayDiv: HTMLDivElement = document.getElementsByClassName("some_class")[0];
左侧的变量类型指定给 HTMLDivElement,而右侧的值如果是更通用的类型,则它会给您一个错误。
推荐阅读
- c - 预处理器宏翻译
- python - 如何识别跟踪中的每条指令访问(读取和/或写入)哪些变量?
- c# - 为什么 DatabaseInitializer 会被调用两次?
- ios - After publishing a new version of a game to App Store old versions stopped receiving ads from admob
- python - 有没有办法将熊猫数据框存储到 Teradata 表中
- excel - How to prevent my Save macro from running a second time
- javascript - GitHub Pages 存储和渲染图像资产的标准方法
- regex - How to make regex only match when more than two groupings match?
- haskell - 将多态函数应用于两种不同类型的输入
- sql - SQL-Server Using "USE" with INNER JOINS and "UNION" together