Не удается прочитать свойство 'nativeElement' в angular с источником звука angular 8 - PullRequest
0 голосов
/ 13 февраля 2020

Я не знаю почему, но в моей ситуации я каждый раз получал эту ошибку:

ERROR TypeError: Cannot read property 'nativeElement' of undefined

Я знаю в angular 8, я должен указать в моем viewChild is Dynami c. Вот мой код:

  // my var
  @ViewChild('currentMusic', { static: false }) audioRef: ElementRef;


  // my listener
  this.audioRef.nativeElement.addEventListener('timeupdate', (data: any) => {
    console.log('timer :' + data.target.currentTime)
  })

  // and in my HTML
  <div hidden *ngIf="(audio$ | async); let m">
    <audio #currentMusic autoplay>
      <source [src]="baseUrl + m.file.url" type="audio/mpeg">
    </audio>
  </div>

Поэтому, когда я показываю страницу, мой (audio$ | async) равен нулю, я должен выбрать ссылку для воспроизведения музыки c. Я должен использовать только одного игрока. Спасибо, если у вас есть решение

1 Ответ

0 голосов
/ 13 февраля 2020

Я предлагаю не использовать asyn c внутри * ngIf, потому что он не будет работать с ViewChild должным образом:

Решение:

  • Поймать дату события прямо из аудиоэлемент (с асин c):

HTML:

  <audio #currentMusic (timeupdate)="onTimeUpdate($event)" autoplay>
     <source [src]="baseUrl + m.file.url" type="audio/mpeg">
  </audio>

Машинопись:

  onTimeUpdate(event: any) {
    console.log('timer :' , event.target.currentTime)
  }

PS: у меня работает без использования | ASYN c.

...