С тех пор я нашел способ, взяв ссылку из ответа stackoverflow
В вашем шаблоне: <div #ytPlayer id="ytPlayer"></div>
В ts ngAfterViewinit:
ngAfterViewInit() {
const doc = (<any>window).document;
const playerApiScript = doc.createElement('script');
playerApiScript.type = 'text/javascript';
playerApiScript.src = 'https://www.youtube.com/iframe_api';
doc.body.appendChild(playerApiScript);
}
Изатем прослушайте событие, которое iFrame запускает в окне, когда оно завершает загрузку API:
(<any>window).onYouTubeIframeAPIReady = () => {
this.player = new (<any>window).YT.Player('ytPlayer', {
height: '500px',
width: '100%',
videoId: 'hHMyZR87VvQ',
playerVars: { 'autoplay': 0, 'rel': 0, 'controls': 2 },
events: {
'onReady': (event) => {
console.log('Player is ready');
},
'onStateChange': (event) => {
}
}
});
};
Затем вы можете вызывать методы, такие как getCurrentTime (), для плеера или любой переменной, которой вы его назначаете.
Редактировать: Он по-прежнему использует объект документа и окна вместо углового элемента ref, однако я обновлю этот ответ, как только найду способ сделать это с помощью окна / документа.