Я могу проигрывать видео в обещании. Используйте эти атрибуты в теге Video "muted" и "autoplay" .
Также я создал пример stackblitz, где я вызываю фальшивый http-вызов, и я пытаясь воспроизвести образец видео. Пожалуйста, используйте ngIf = "gameInfo" в вашем видео теге, чтобы убедиться, что ваши данные ответа доступны перед отображением вашего видео. Также вы можете обернуть воспроизведение видео внутри setTimeout, чтобы убедиться, что видео-тег отображается на странице.
Вот рабочий пример стекаблица.
Воспроизведение видео с использованием angular
app.component. html
<hello name="{{ name }}"></hello>
<p>
Start editing to see some magic happen :)
</p>
<div id="instructions" class="angled-img pull-left">
<video muted autoplay *ngIf="videoData" id="video1" width="350px" height="195px" class="img" controls
>
<source src="{{videoData.url}}" type='video/mp4' />
</video>
</div>
app.component.ts
import { Component,OnInit } from '@angular/core';
import { VideoService } from './video.service';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
name = 'Angular';
videoData: any = {};
constructor(private videoService: VideoService) {
}
ngOnInit() {
this.videoService.getVideo().subscribe(data => {
this.videoData = data;
this.videoData.url = 'https://www.w3schools.com/html/mov_bbb.mp4';
setTimeout(() => {
document.getElementById('video1').play();
}, 1000);
}, (error) => {
this.videoData.url = 'https://www.w3schools.com/html/mov_bbb.mp4';
setTimeout(() => {
document.getElementById('video1').play();
}, 1000);
console.log('error', error)
})
}
}
video.service.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators'
@Injectable()
export class VideoService {
private httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
url: string;
constructor(private http: HttpClient) {
this.url = 'http://my-json-server.typicode.com/kodecrash/Javascript/video/1';
}
getVideo() {
return this.http.get<any>(this.url, this.httpOptions)
.pipe(map( (data: any) => {
// login successful if there's a jwt token in the response
return data;
}));
}
}