Javascript 如何使用Angular 2触发文件下载?

Javascript 如何使用Angular 2触发文件下载?,javascript,angular,typescript,Javascript,Angular,Typescript,我正在创建一个应用程序来浏览和下载电话录音 此应用程序的一部分是一个表格,表格中填充了*ngFor以显示录制和相关信息。表中的每一行都有一个复选框,用于标记要下载的录制。我已经到了可以使用console.log来记录我正在使用的测试MP3的链接的地步,但我不知道如何真正触发所述MP3的下载 我真的希望能够使用Typescript而不使用jQuery来完成这项工作 <table> <thead> <tr>

我正在创建一个应用程序来浏览和下载电话录音

此应用程序的一部分是一个表格,表格中填充了*ngFor以显示录制和相关信息。表中的每一行都有一个复选框,用于标记要下载的录制。我已经到了可以使用console.log来记录我正在使用的测试MP3的链接的地步,但我不知道如何真正触发所述MP3的下载

我真的希望能够使用Typescript而不使用jQuery来完成这项工作

<table>
        <thead>
            <tr>
                <th>
                    <input type="checkbox" [checked]="isAllChecked()" (change)="checkAll($event)"> </th>
                <th>Date</th>
                <th>Time</th>
                <th>Duration</th>
                <th>Calling Number</th>
                <th>Called Number</th>
                <th> </th>
            </tr>
        </thead>
        <tbody>
            <tr *ngFor="let entry of recordingsList">
                <td>
                    <input type="checkbox" [(ngModel)]="entry.isSelected"> </td>
                <td>{{entry.date}}</td>
                <td>{{entry.time}}</td>
                <td>{{entry.duration}}</td>
                <td>{{entry.callingNumber}}</td>
                <td>{{entry.calledNumber}}</td>
                <td>
                    <button (click)="openPlayer(entry)" class="play-button"><i class="material-icons">play_arrow</i></button>
                </td>
            </tr>
        </tbody>
    </table>
-


非常感谢您的帮助。

直接回答问题,您可以为每个链接打开新选项卡:

downloadSelected() {
        let isSelected = this.recordingsList.filter(x => x.isSelected);
        isSelected.forEach(x => window.open(x.audio, '_blank'));
    }

然而,这在用户体验方面并不优雅,因为多个标签页会被广泛打开。因此,我建议您创建一个特殊的url(例如:example.com/bulk download?ids=1,34,56),用于创建包含选定文件的zip文件夹,并允许用户下载具有
download
属性。@PavelStaselun我知道标记的下载属性。但我不知道如何将其应用到我的用例中。谢谢你的帮助!但是,有两个问题使我无法完全满足我的需要。它会在一个新窗口中打开选定的mp3,而我需要在用户单击下载按钮时开始下载该文件。此外,这不会打开所有选定的录制。它似乎只打开了第一个。从技术上讲,您可以动态创建多个锚元素,并在它们上触发单击事件。然而,由于浏览器的限制,这是不可靠的,而且这不是一种角度的方式。所以,正确的解决方案是在后端创建压缩文件。是的,这似乎不是一个非常干净的解决方案。我希望我可以在Angular中这样做,但它看起来越来越像是根本不可能的,我需要我的后端开发人员创建所选文件的zip和一个链接,我可以href指向:(
downloadSelected() {
        let isSelected = this.recordingsList.filter(x => x.isSelected);
        isSelected.forEach(x => window.open(x.audio, '_blank'));
    }