2016-11-01 3 views
6

사용자가 비디오 영역 자체를 클릭하면 TypeScript에서 프로그래밍 방식으로 HTML 비디오를 재생하기를 원합니다.Angular 2 Typescript에서 HTML 5 비디오 재생

이 내 HTML 코드입니다 :

@ViewChild('videoPlayer') videoplayer: any; 

toggleVideo(event: any) { 
    this.videoplayer.play(); 
} 

문제는 내가 play() 기능이있는/정의되지 않았습니다라는 오류가 있다는 것입니다 :

<div class="video"> 
<video controls (click)="toggleVideo()" id="videoPlayer"> 
    <source src="{{videoSource}}" type="video/mp4" /> 
    Browser not supported 
</video> 
</div> 

이 내 타이프 라이터 코드입니다. 여기에 무슨 실수가있을 수 있니?

답변

16

문제는 id을 사용하여 video 요소에 대한 참조를 얻으려고하고 있습니다. 대신 템플릿 참조 변수 (#)를 사용해야합니다

<div class="video"> 
    <video controls (click)="toggleVideo()" #videoPlayer> 
     <source src="{{videoSource}}" type="video/mp4" /> 
     Browser not supported 
    </video> 
</div> 

템플릿 참조 변수 here에 대해 자세히 알아보십시오.

편집 :

@ViewChild('videoPlayer') videoplayer: any; 

toggleVideo(event: any) { 
    this.videoplayer.nativeElement.play(); 
} 

크레딧이 하나 @peeskillet하기 : 직접 DOM 요소에 액세스하기 때문에

또한, 귀하의 toggleVideo(event: any) 기능에, 당신은 play() 함수를 호출 한 후 nativeElement을 얻을 필요 .

+0

답장을 보내 주셔서 감사합니다. 나는 여전히 'this.videoplayer.play가 함수가 아니다'라는 예외를 얻고있다. – Rai

+0

@ 라이'비디오'는'플레이'기능을 가지고 있습니까? –

+2

elementRef에서 네이티브 요소를 가져와야한다고 생각합니다. 비디오 표준 HTML입니다. [mdn] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement)을 참조하십시오. –