从角度类型脚本初始化 html 标记

Posted

技术标签:

【中文标题】从角度类型脚本初始化 html 标记【英文标题】:initialize html tag from angular type-script 【发布时间】:2022-01-23 12:25:01 【问题描述】:

如下角类型脚本代码所示,我想参考下面发布的.html代码中提到的划分,使用document.getElementById 日志语句的结果是null

请告诉我如何正确引用 type-script 中的 html-tag

.ts

  export class GridCellPopupOverlayComponent implements OnInit 
  isVisible = true
  container: any
  content
  closer: any
  overlay: any
  AoC: any
  AvgH: any
  Dist: any
  I: any

  constructor()  
  

  initHTMLElements() 
    console.log("html init")
    this.container = document.getElementById('idGridCellInfoPopupDiv');
    this.AoC = document.getElementById('idGridCellInfoAoCValueDiv');
    this.AvgH = document.getElementById('idGridCellInfoAvgHValueDiv');
    this.Dist = document.getElementById('idGridCellInfoDistValueDiv');
    this.I = document.getElementById('idGridCellInfoIValueDiv');
    this.closer = document.getElementById('gridCellInfoPopup-closer');
    console.log("this.AoC:",this.AoC)

  
  
  

html

<div *ngIf="isVisible" id="idGridCellInfoPopupDiv" class="ol-popup">
<a href="#" id="gridCellInfoPopup-closer" class="ol-popup-closer"></a>
<!-- <span id="idGridCellLabel" class="label label-success">dsfdsfsa</span> -->
<div class="alert alert-success alert-sm" role="alert">
  <div class="alert-items">
      <div class="alert-item static">
          <div class="alert-icon-wrapper">
              <clr-icon class="alert-icon" shape="check-circle"></clr-icon>
          </div>
          <div id="idGridCellAlertText"class="alert-text">
          </div>
      </div>
  </div>
  <!-- <button type="button" class="close" aria-label="Close">
      <clr-icon aria-hidden="true" shape="close"></clr-icon>
  </button> -->
</div>


<div id="idGridCellInfoAoCValueDiv"></div>
<div id="idGridCellInfoAvgHValueDiv"></div>
<div id="idGridCellInfoDistValueDiv"></div>
<div id="idGridCellInfoIValueDiv"></div>

【问题讨论】:

尝试使用var代替this.container、this.AoC等,看看是否可行 @MasterAzazel 能否提供一些代码 【参考方案1】:

您可以使用 @ViewChild/@ViewChildren 装饰器从 .html 获取元素。他们在幕后使用document.getElementById。这是 Angular 中的正确方法。

还要注意ngAfterViewInit lifeycle 方法,您可以在其中访问您的参考资料。在调用 ngAfterViewInit 回调之前设置视图查询。 (形成 Angular 文档)

这是参考:https://angular.io/api/core/ViewChild

顺便说一句,您可以省略static: false,因为它是默认值。

TS 文件


import  HelloComponent  from './hello.component';

@Component(
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
)
export class AppComponent implements AfterViewInit 
  name = 'Angular';

  @ViewChild('pRef', static: false) pRef: ElementRef;

    ngAfterViewInit() 
    console.log(this.pRef.nativeElement.innerHTML); 
    this.pRef.nativeElement.innerHTML = "DOM updated succesfully!!!"; 
  

模板文件

<hello name=" name " ></hello>

<p #pRef>
  Start editing to see some magic happen :)
</p>```


【讨论】:

能否提供一些代码 我加了一个简单的例子

以上是关于从角度类型脚本初始化 html 标记的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )

从 mapbox 地图中删除所有标记或重新初始化地图

null和undefined的区别

从实战角度解读JVM:类加载机制+JVM调优实战+代码优化

JS如何获取值

如何在html页面中使用js变量