请考虑我的模板中的下表
<mat-table #table [dataSource]="dataSource">
<!--- Note that these columns can be defined in any order.
The actual rendered columns are set as a property on the row definition" -->
<!-- ChangeId Column -->
<ng-container cdkColumnDef="fileName">
<mat-header-cell *cdkHeaderCellDef mat-sort-header> File </mat-header-cell>
<mat-cell *cdkCellDef="let row" (click)="downloadFile(row.SerialNumber)"> <a (click)="downloadFile(row.SerialNumber)">{{row.File}}</a> </mat-cell>
</ng-container>
<!-- DateSubmitted -->
<ng-container cdkColumnDef="fileType">
<mat-header-cell *cdkHeaderCellDef mat-sort-header> File Type </mat-header-cell>
<mat-cell *cdkCellDef="let row"> {{row.FileType}} </mat-cell>
</ng-container>
<!-- ChangeSponsor -->
<ng-container cdkColumnDef="contentType">
<mat-header-cell *cdkHeaderCellDef mat-sort-header> Content Type </mat-header-cell>
<mat-cell *cdkCellDef="let row"> {{row.ContentType}} </mat-cell>
</ng-container>
<mat-header-row *cdkHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *cdkRowDef="let row; columns: displayedColumns;">
</mat-row>
</mat-table>
它在组件类中调用的方法
downloadFile(serialNumber: number): void {
this.fileService.downloadFile(serialNumber);
}
在上面的表中,我试图创建一个调用downloadFile方法的(click)事件,然后该方法调用服务类中的一个方法,该方法将文件发送到浏览器供用户下载 . 但是,上述任何尝试都不起作用 . 所以我肯定错过了一些东西 .
有人能让我知道我错过了什么不让这个工作吗?
非常感谢您提前了解此事 .
编辑:我被告知这可能是重要的信息,但这是一个儿童组件 .
3 回答
有什么理由将点击事件放两次?
尝试仅将其保留在锚元素中:
好吧,我的问题确实是由于组件嵌套在父级中,所以为了让click事件向上移动到父级别,我需要通过@Output发出它 . 我这样做了 .
儿童模板
子组件
在父模板中调用儿童模板
downloadFiles方法现在位于父组件中,并且服务方法已移至父服务类 . 以下组件中的方法 .
我在我的一个表行中放了几个按钮 . 编辑与您的情况类似 .
在组件中: