2016-11-01 16 views
6

Chcę zacząć programowo odtwarzać wideo HTML z TypeScript, gdy użytkownik kliknie na obszar Video sam.Odtwarzanie wideo HTML 5 z Angular 2 Maszynek do pisania

To jest mój kod HTML:

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

To jest mój kod maszynopis:

@ViewChild('videoPlayer') videoplayer: any; 

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

Problem jest, że pojawia się błąd, który mówi play() funkcja nie jest zdefiniowana/istnieje. Jaki może być błąd?

Odpowiedz

16

Problem polega na tym, że próbujesz uzyskać odniesienie do elementu video przy użyciu jego id. Trzeba użyć szablonu zmienną referencyjną (#) zamiast:

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

Więcej o zmiennej referencyjnej here szablonu.

Edit:

Ponadto, w swojej funkcji toggleVideo(event: any), trzeba dostać nativeElement a następnie wywołać funkcję play() ponieważ uzyskiwania dostępu elementu DOM bezpośrednio:

@ViewChild('videoPlayer') videoplayer: any; 

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

kredytów @peeskillet dla tego jednego .

+0

Dzięki za odpowiedź! Nadal dostaję wyjątek, który brzmi "this.videoplayer.play nie jest funkcją". – Rai

+0

@Rai Czy jesteś pewien, że 'video' ma funkcję' play'? –

+2

Myślę, że musisz pobrać natywny element z elementuRef. wideo jest standardowym html. Zobacz [mdn] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement) –

Powiązane problemy