javascript - 如何在更改事件完成之前更新 DOM?

标签 javascript html angular typescript

我创建了一个文件输入来打开视频。我想在 my_variable 存在的情况下显示该视频输入。 HTML 如下所示:

<input type="file" (change)="handleFileInput($event)" accept="video/mp4">
<div *ngIf="my_variable">
  <video id="video" width="200" height="200" src="{{ my_variable.path }}">
  </video>
</div>

只要用户选择视频,就会调用 (change) 事件。我的函数handleFileInput应该像这样更新my_variable:

handleFileInput(event: any) {
    this.my_variable = event.target.files.item(0);
    this.video = document.getElementById('video') as HTMLInputElement;
    // do other stuff that requires this.video variable
}

我的问题是 this.video 变量为 null。实际上,由于更改事件尚未完成,DOM 中的 ng if 条件不会更新 View ,然后,我的视频输入永远不会创建。因此,此时 this.videonull。但我不知道如何解决这个问题。

我在 Stack Overflow 上没有找到任何内容,我尝试在执行 document.getElementById('video') 时设置超时。例如:

setTimeout(() => {
    this.video = document.getElementById('video') as HTMLInputElement;
    // do other stuff that requires this.video variable
      }, 1000); 

它确实有效,但我希望我能找到一个更清晰的解决方案。 请你帮助我好吗 ? 谢谢

最佳答案

不要使用 *ngIf

<div [style.display]="my_variable ? 'none' : 'block'">
  <video ....>
  </video>
</div>

关于javascript - 如何在更改事件完成之前更新 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59562237/

相关文章:

java - Spring MD5以形式出现

angular - 找不到名称 'KeyboardEvent'

angular - 如何使用 blob 在新选项卡中显示 pdf

javascript - 窗口右侧的小缝隙(窗口过大)

javascript - ajax 与 php 的连接在子目录中不起作用

php - 没有从模型查询中获得预期的输出。我应该使用什么查询?

javascript - Ionic 3 未在图像 src 中显示相机 FILE_URI 路径

javascript - 指定 Meteor 包依赖项的正确方法

javascript - 捕获父元素上的事件

javascript - 如何使用 sass 创建条件导入?