Saltar al contenido

Reproducción de video HTML 5 de Angular 2 Typecript

Solución:

El problema es que intentas obtener una referencia a video elemento usando su id. Necesitas usar variable de referencia de plantilla (#) en lugar de:

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

Lea más sobre la variable de referencia de la plantilla aquí.

Editar:

Además, en tu toggleVideo(event: any) función, necesitas conseguir nativeElement y luego llamar al play() función porque está accediendo al elemento DOM directamente:

@ViewChild('videoPlayer') videoplayer: ElementRef;

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

Créditos a @peeskillet por este.

Otros ya han respondido la pregunta básica (debes usar nativeElement). Sin embargo, desde nativeElement es de tipo any deberías ‘lanzarlo’ a un tipo de elemento más específico (para el <video> etiqueta esto es HTMLVideoElement).

 const video: HTMLVideoElement = this.videoElement.nativeElement;
 video.play();

Esto le da intellisense para todos los métodos y propiedades compatibles.

Y, por supuesto, todo esto es solo tiempo de compilación: no está convirtiendo nada y aún obtendrá un error si el elemento no es realmente un video.

Aquí hay otra forma de configurar su videoPlayer variable a utilizar HTMLVideoElement para seguridad de tipo

videoPlayer: HTMLVideoElement;

@ViewChild('videoPlayer')
  set mainVideoEl(el: ElementRef) {
    this.videoPlayer = el.nativeElement;
  }

toggleVideo(event: any) {
    this.videoplayer.play();
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *