У меня есть компонент для показа видео. Для доступа к видео в .ts-файле я использую @ViewChild и получаю его как ElementRef, но мне нужно как HTMLVideoElement. Я не могу понять, какой хук жизненного цикла является лучшим для приведения.
Я пытался выполнить приведение в ngOnInit и ngAfterViewInit, но получаю Проблемы, потому что я использую его в ngOnChange, и он вызывается раньше, и поэтомувсе еще не определено. Поэтому очевидно, что это будет работать для приведения его в ngOnChange, но на самом деле я хочу привести его только один раз, а не при каждом изменении. Мое рабочее решение сейчас состоит в том, чтобы использовать только ElementRef-Element, но мне это не нравится, потому что везде я должен писать videoplayerNativeElement.nativeElement
@ViewChild('videoplayer') private videoplayerNativeElement: ElementRef;
private videoPlayer: HTMLVideoElement;
public ngOnInit() {
//wrong place for
//this.videoPlayer = this.videoplayerNativeElement.nativeElement;
}
public ngAfterViewInit(): void {
//wrong place for
//this.videoPlayer = this.videoplayerNativeElement.nativeElement;
}
public ngOnChanges(): void {
//do stuff with videoPlayer, like videoPlayer.play()
}
Я ожидаю, что должен быть хорошийместо для кастинга, но не могу понять где.