如何使数组长度等于音乐持续时间

问题描述

我使用Angular 8和Typescript

问题::我希望数组与音频标签的音乐源具有相同的长度,以启用与轨道中预期位置同步的注释。与soundcloud类似。

技术方法

我有一个带有一个音频文件的音频标签。这个持续时间我可以使用@H_404[email protected]dioplayer.duration

访问

现在我有一个数组@H_404_11@public comments = [],我希望它的长度与轨道持续时间相同

@H_404_11@<div *ngFor="let comment of comments">
  </div>

我尝试了同步它们

@H_404_11@ ngAfterViewInit() {
this.comments.length= this.audioplayer.duration  }

但是我得到无效的数组长度。有办法使这项工作吗?

解决方法

您需要使用正确数量的元素初始化数组:

comments = new Array(this.audioplayer.duration);
,

即使您以相同的音乐持续时间制作一个阵列,也不会得到想要的东西。因为如您所见,SoundCloud音乐栏UI包含恒定数量的高度不同的栏。

但是,如果您想知道如何以角度获得音频持续时间,您要做的就是制作@ViewChild()的音频标签,然后在ngAfterViewInit()中获得这样的音频持续时间:>

this.bars = new Array(this.audioplayer.duration);