不确定为什么这两个警告来自。 有什么想法摆脱打字稿中的那些警告信息吗? 感谢
export function playAudio(e, audioId) {
e.preventDefault()
let audioPlayer: HTMLElement = document.getElementById(audioId)
audioPlayer.play();
}
<input type="checkbox" id="inputSchedule" name="inputCheckboxesSchedule"
value={this.state.displayMode}
onClick={e => this.toogleDisplaymode(e.target.value)}/>
答案 0 :(得分:5)
在Angular 5中,您需要按如下方式进行投射:
let audioPlayer = <HTMLVideoElement> document.getElementById(audioId);
audioPlayer.play();
答案 1 :(得分:4)
第一个警告表示play()
实例上没有HTMLElement
方法。这是有道理的,因为play()
可能是您在自己的组件上定义的方法。
第二个警告表示value
实例中没有EventTarget
属性。有关EventTarget
s, see MDN。
我不确定如何解决第一个问题,因为您需要获取对已创建的实例的访问权限。但对于第二个,你很可能只需要转换返回值。所以,你应该做这样的事情:
{e => this.toogleDisplaymode((e.target as HTMLInputElement).value)}
编辑:这可能会解决您的第一个问题。
我不确定,但可能是您尝试播放媒体元素,如果是这种情况,您需要将audioPlayer转换为正确的类型:
let audioPlayer: HTMLMediaElement = document.getElementById(audioId)
答案 2 :(得分:4)
帖子较晚但有助于其他用户,要解决第一个问题,您可以将audioPlayer
变量的类型更改为HtmlVideoElement
,如下所示
let audioPlayer: HTMLVideoElement = document.getElementById(audioId);
audioPlayer.play();
这肯定会解决问题
答案 3 :(得分:1)
在angular 7中,此代码有效:
let audioPlayer = <HTMLVideoElement>document.getElementById('video');
audioPlayer.muted = true;