首页 > 解决方案 > 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 个。

请有人解释,谢谢你提前

标签: htmlangulartypescript

解决方案


对于这个声明:

menuDisplayDiv  = document.getElementsByClassName("some_class")[0] as HTMLDivElement;

在右侧,您正在进行类型转换,因此它正在工作。

对于这个声明:

menuDisplayDiv: HTMLDivElement = document.getElementsByClassName("some_class")[0];

左侧的变量类型指定给 HTMLDivElement,而右侧的值如果是更通用的类型,则它会给您一个错误。


推荐阅读