1 menjawab

Jawaban Terbaik

Saya memeriksa Stackblitz Anda. Bukan praktik yang baik jika Anda meneruskan fungsi layanan sebagai @Input() dengan langsung mereferensikan layanan dari template.

Oleh karena itu, alih-alih mereferensikan layanan dalam templat seperti yang Anda lakukan saat ini:

<audio-container [currentTime]="audio.currentTime()">

Anda harus membuat Observable baru yang akan merujuk ke yang dari layanan, dan kemudian menggunakannya dalam template.

<audio-container [currentTime]="$currentTime">

App.component.ts

$currTime: Observable<any>;

constructor(public audio: AudioPlayerService) {
  this.$currentTime = this.audio.currentTime();
}

Stackblitz

Saran: Jangan mereferensikan variabel/fungsi layanan langsung dari template.

BURUK:

<button (click)="audio.play(version1)">Play Song 1</button>

BAIK:

<button (click)="play(version1)">Play Song 1</button>

play(version) {
   this.audio.play(version).subscribe(...);
}
3
Dino 14 Agustus 2019, 10:47