Angular: ViewChild 音频元素作为 HTMLAudioElement?
Angular: ViewChild audio element as HTMLAudioElement?
我正在尝试获取组件内的 audio
元素。起初我是用老式的方式做的:
$player: HTMLAudioElement;
...
ngOnInit() {
this.$player = document.getElementById('stream')
}
但我想这样做 The Angular Way™ 所以我想我应该使用 @ViewChild
.但它 returns 和 ElementRef
我必须反复钻入 nativeElement
属性 才能实际作用于元素,它看起来更混乱。
我会喜欢做这样的事情:
@ViewChild('stream') $player: HTMLAudioElement;
但这不起作用。
如果你把一个setter关联到ViewChild
,你可以在其中初始化一个HTMLAudioElement
属性,然后使用那个属性:
$player: HTMLAudioElement;
@ViewChild('stream') set playerRef(ref: ElementRef<HTMLAudioElement>) {
this.$player = ref.nativeElement;
}
有关演示,请参阅 this stackblitz。
另一种减少对 ElementRef.nativeElement
的访问的方法是定义一个 getter 属性 returns 元素:
@ViewChild('stream') playerRef: ElementRef<HTMLAudioElement>;
get $player(): HTMLAudioElement {
return this.playerRef.nativeElement;
}
ngAfterViewInit() {
console.log(this.$player);
}
有关演示,请参阅 this stackblitz。
我正在尝试获取组件内的 audio
元素。起初我是用老式的方式做的:
$player: HTMLAudioElement;
...
ngOnInit() {
this.$player = document.getElementById('stream')
}
但我想这样做 The Angular Way™ 所以我想我应该使用 @ViewChild
.但它 returns 和 ElementRef
我必须反复钻入 nativeElement
属性 才能实际作用于元素,它看起来更混乱。
我会喜欢做这样的事情:
@ViewChild('stream') $player: HTMLAudioElement;
但这不起作用。
如果你把一个setter关联到ViewChild
,你可以在其中初始化一个HTMLAudioElement
属性,然后使用那个属性:
$player: HTMLAudioElement;
@ViewChild('stream') set playerRef(ref: ElementRef<HTMLAudioElement>) {
this.$player = ref.nativeElement;
}
有关演示,请参阅 this stackblitz。
另一种减少对 ElementRef.nativeElement
的访问的方法是定义一个 getter 属性 returns 元素:
@ViewChild('stream') playerRef: ElementRef<HTMLAudioElement>;
get $player(): HTMLAudioElement {
return this.playerRef.nativeElement;
}
ngAfterViewInit() {
console.log(this.$player);
}
有关演示,请参阅 this stackblitz。