Вам необходимо провести рефакторинг вашего кода. Потому что в коде, который вы разместили, при просмотре init (ViewChild
+ ngAfterViewInit
) ваше видео еще не существует из-за *ngIf="fpath"
(где fpath
заполняется только при выборе пользователя, поэтому в handleFileSelect
а не при просмотре init).
Несколько решений:
удалить * ngIf (предпочитаете, может быть, его скрывать?). Таким образом, ViewChild
+ ngAfterViewInit
будет отлично работать
Динамически получить ссылку на шаблон видео, как только *ngIf
оценивается как true (и позволить angular выполнить его, прежде чем пытаться его использовать). Следующий код будет запускать сеттер каждый раз, когда он принимает значение true:
@ViewChild('myVideo') set content(content: ElementRef) {
this.myVideo = content;
}
+
Задержка вашего addEventListener
: например, с помощью setTimeout
, чтобы убедиться, что angular успел инициализировать ваш myVideo