为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 ngIf 检查另一个元素是否存在?

如何使用 ngIf 检查另一个元素是否存在?

BIG阳 2023-12-19 15:51:21
如果存在另一个元素(稍后将动态填充),如何调整一个元素以显示/隐藏?例如:app.component.tsexport class AppComponent implements OnInit, AfterViewInit {    ngOnInit(): void {}    ngAfterViewInit() {         //Run a library that will populate the table, for example         //This will create an element with an id tableData         generateTableDataAfterDOMIsReady('#container');    }}app.component.html<div id="container">    <!-- When the javascript function is invoked, it will dynamically change the content inside this div and generate a <div id="tableData"></div></div><div *ngIf="pseudoIsTableDataExists()">Data has been generated</div>我没有其他变量可以监听以使其工作。唯一的线索是让第二个 div 在 #tableData 存在时显示出来。
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

通过注入 DocumenttableData 是否存在> 将令牌放入构造函数中。接下来,使用普通的旧 JavaScript 通过 id 查找元素。视图加载后,检查它是否存在,如下所示:


import { Inject } from "@angular/core";

import { DOCUMENT } from "@angular/common";


constructor(@Inject(DOCUMENT) document) {

}


ngAfterViewInit() {

   if (document.getElementById('tableData')) {

      // success scenario

   } else {

      // failure

   }

}


ngOnInit() {

   generateTableDataAfterDOMIsReady('#container');

}


将 generateTableDataAfterDOMIsReady('#container'); 的调用移至 ngOnInit 而不是 ngAfterViewInit 中。

@ViewChild 会更好,但仅当标记的 id 指定为 #id 时才有效。


查看完整回答
反对 回复 2023-12-19
?
holdtom

TA贡献1805条经验 获得超10个赞

最简单的方法是设置一个标志


  ngAfterViewInit() {


         //Run a library that will populate the table, for example

         //This will create an element with an id tableData

         generateTableDataAfterDOMIsReady('#container');

         this.pseudoIsTableDataExists=true

    }


<div *ngIf="pseudoIsTableDataExists">Data has been generated</div>


查看完整回答
反对 回复 2023-12-19
?
慕慕森

TA贡献1856条经验 获得超17个赞

简单地说,您可以绑定hidden 属性。


超文本标记语言

<div [hidden]="!isTableDataExists">

    Data has been generated

</div>

成分

 ngAfterViewInit() {


     //Run a library that will populate the table, for example

     //This will create an element with an id tableData

     generateTableDataAfterDOMIsReady('#container');

     this.isTableDataExists = true;

}


查看完整回答
反对 回复 2023-12-19
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信