Javascript 哪个弯钩是铸造ElementRef的正确弯钩?

Javascript 哪个弯钩是铸造ElementRef的正确弯钩?,javascript,angular,typescript,hook,lifecycle,Javascript,Angular,Typescript,Hook,Lifecycle,我有一个显示视频的组件。要访问.ts文件中的视频,我使用@ViewChild并将其作为ElementRef获取,但我需要它作为htmlvideo元素。我不知道哪一个是最适合铸造的 我试图在ngOnInit和NgoAfterViewInit中进行转换,但遇到了问题,因为我在ngOnChange中使用了它,它在之前被调用,因此仍然没有定义。所以很明显,在ngOnChange中施展它是可行的,但我实际上只想施展一次,而不是每次改变。 我现在的工作解决方案是,只使用ElementRef元素,但我不喜欢它

我有一个显示视频的组件。要访问.ts文件中的视频,我使用@ViewChild并将其作为ElementRef获取,但我需要它作为htmlvideo元素。我不知道哪一个是最适合铸造的

我试图在ngOnInit和NgoAfterViewInit中进行转换,但遇到了问题,因为我在ngOnChange中使用了它,它在之前被调用,因此仍然没有定义。所以很明显,在ngOnChange中施展它是可行的,但我实际上只想施展一次,而不是每次改变。 我现在的工作解决方案是,只使用ElementRef元素,但我不喜欢它,因为无论在哪里我都必须编写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()
}

我想一定有一个很好的地方来制作角色扮演,但不知道在哪里。

检查这个答案:你可以用play()之类的东西创建一个函数,并在OnChanges中调用它,前提是videoPlayer有一个值,然后在AfterviewInit中用ChangeDetectorRef.detectChanges()这样调用同一个函数?