Мне известно о решении NativeAudio, но мне было интересно, возможно ли сделать это полностью через Angular.
Пока у меня что-то есть, но оно не работает:
import { Injectable } from '@angular/core'
@Injectable({
providedIn: 'root',
})
export class AudioService {
audio: HTMLAudioElement
constructor() {
this.audio = new Audio()
}
playScan = async () => {
this.audio.src = './sound4_selfservice_scan_item.wav'
this.audio.load()
await this.playAudio()
}
playIssue = async () => {
this.audio.src = './sound3_checkin_denied.wav'
await this.playAudio()
}
playAudio = () => this.audio.play()
}
и в моем компоненте:
@Component({
selector: 'scan-retail-items',
template: `
<div class="app-container scan-item-component {{mode}} {{scanClass}}">
<main-navigation [member]="handOffMember"
(onBackPressed)="onBackPressed($event)"></main-navigation>
<div class="main-container -expanded">
<ion-button
color="secondary"
*virtualItem="let item"
(click)="clickTestButton(item.upc)">{{item.name}}
</ion-button>
</ion-virtual-scroll>
</ion-content>
</div>
</main-body>
<status-icon mode={{mode}}></status-icon>
</div>
</div>
`,
styleUrls: ['./scan_retail_items.component.scss'],
})
export class ScanRetailItemsComponent implements OnInit, OnDestroy {
constructor(private audio: AudioService) {
}
ngOnInit(): void {
}
clickTestButton = async (upc: string) => {
console.log('Test Product Scan: ' + upc)
this.addItemByUPC({ scanData: upc })
await this.audio.playScan()
}
Нажатие на кнопку вызывает clickTestButton
, и она теоретически должна воспроизводить звук, но не похоже, что он это делает. Есть ли что-то, что я делаю не так, пока я не перехожу к Native Audio?