How to update the DOM before change event is done?
我创建了一个文件输入来打开视频。我想在 my_variable 存在的条件下显示该视频输入。这是 HTML 的样子:
1
2 3 4 |
<input type="file" (change)="handleFileInput($event)" accept="video/mp4">
<video id="video" width="200" height="200" src="{{ my_variable.path }}"> |
只要用户选择视频,就会调用 (change) 事件。我的函数 handleFileInput 应该像这样更新 my_variable:
1
2 3 4 5 |
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 变量是
我没有在 Stack Overflow 上找到任何东西,我尝试在执行
1
2 3 4 |
setTimeout(() => {
this.video = document.getElementById(‘video’) as HTMLInputElement; // do other stuff that requires this.video variable }, 1000); |
它确实有效,但我希望我能找到更清晰的解决方案。
请你帮助我好吗 ?
谢谢
不要使用 *ngIf
1
2 |
<video ….>
</video> |
在 HTML DOM 中拥有 video 标签并使用 ngIf 用变量切换它,您正在做的是创建一个循环依赖项,因为 this.video 为空,因为它正在等待更改事件处理程序完成它的工作。您需要做的是动态添加视频标签
1
|
<input type="file" (change)="handleFileInput($event)" accept="video/mp4">
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@ViewChild(‘videoTagContainer’) public videoTagContainer: ElementRef;
handleFileInput(event: any) { if(parentElement.firstChild) let videoElement = document.createElement(‘video’) as HTMLInputElement; parentElement.appendChild(videElement); |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269166.html