javascript - 错误类型错误:无法读取未定义的属性“audioPlayer”
问题描述
我正在尝试使用文本创建音频同步。这就是我的想法,但后来我收到了这个错误“无法读取属性audioPlayer
” undefined
。我想知道如何让这个工作。
<audio #audiofile src="/assets/song/test2f.mp3" controls></audio><br>
<div id="subtitles"></div>
import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
@Component({
selector: 'app-starter',
templateUrl: './starter.component.html',
styleUrls: ['./starter.component.scss']
})
/**
* Utility starter component
*/
export class StarterComponent implements OnInit, AfterViewInit {
// bread crumb items
breadCrumbItems: Array<{}>;
@ViewChild('audiofile') audioPlayer: ElementRef<HTMLAudioElement> ;
constructor() {}
ngOnInit() {
this.breadCrumbItems = [{ label: 'Utility' }, { label: 'Starter Page', active: true }];
}
ngAfterViewInit() {
console.log(this.audioPlayer.nativeElement);
this.just_one();
}
just_one() {
var subtitles = document.getElementById("subtitles");
var syncData = [
{ "end": "0.2","start": "0.0","text": "I"},
{ "end": "0.7000000000000001","start": "0.2","text": "believe"},
{ "end": "0.9","start": "0.7000000000000001","text": "you're"},
{ "end": "1.2","start": "0.9","text": "just"},
{ "end": "1.4","start": "1.2","text": "talking"} ,
{ "end": "1.7000000000000002","start": "1.4","text": "nonsense"}
];
console.log(syncData)
createSubtitle();
function createSubtitle()
{
var element;
for (var i = 0; i < syncData.length; i++) {
element = document.createElement('span');
element.setAttribute("id", "c_" + i);
element.innerText = syncData[i].text + " ";
subtitles.appendChild(element);
}
}
this.audioPlayer.nativeElement.addEventListener("timeupdate", function(e) {
syncData.forEach(function(element, index, array) {
var currTime = this.audioPlayer.nativeElement.currentTime;
console.log(currTime)
});
});
}
}
解决方案
在您createSubtitle()
使用的函数syncData.forEach()
中尝试将forEach
回调中的函数声明转换为箭头函数
推荐阅读
- c++ - 铸造 Derived** → Base** 错了吗?有什么选择?
- node.js - Vscode API:读取剪贴板文本内容
- c# - PreFlight Request 404 not found .net web api;对预检请求的响应未通过访问控制检查:它没有 http ok 状态
- c# - 单击工具条时停止显示类型光标
- sql - 在每个主键的指定打开和关闭日期之间为多个主键创建日期表
- python - Disqus 在设置了唯一 page.url 和 page.id 的所有页面上显示相同的评论
- ios - 为什么 iPhone XR、XS 和 XS Max 没有将环境图像应用到 ARKit 中的场景?
- c - 如何在定义的位置附加一个字符
- django - Django Rest Framework:使用 url slug 查找模型实例,而不是 pk(lookup_field,retrievemodelmixin)
- python - 如何在 python shell 中激活虚拟环境