Какой угловой крюк жизненного цикла является правильным для применения ElementRef? - PullRequest
3 голосов
/ 24 октября 2019

У меня есть компонент для показа видео. Для доступа к видео в .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()
}

Я ожидаю, что должен быть хорошийместо для кастинга, но не могу понять где.

...