html - 如何在 MatTable 行上实现 OnClick 操作?
问题描述
我想在参考行上实现 OnClick。如果我单击用户 1 的行,我想查看用户 1 的详细信息 例如,如果我单击用户 1 的行,我想访问存储在该用户 1 的行中的信息。
这是html文件:
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="country">
<th mat-header-cell *matHeaderCellDef> Country </th>
<td mat-cell *matCellDef="let element"> {{element.country}} </td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="onClick(row)" >{{row.onClickAction}}</tr>
</table>
这是 ts 文件:
export class AppComponent {
onClickAction = '';
onClick(){
this.onClickAction = 'Action';
}
}
解决方案
像这样尝试,现在您将可以访问行数据并使用router
服务导航到另一个组件。
模板
<tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="clickHandler(row)">
</tr>
零件
export class AppComponent {
constructor(private _router: Router) {}
clickHandler(row) {
this._router.navigateByUrl(`user/${row.id}`);
console.log(row)
}
}
细节组件
export class DetailComponent implements OnInit {
public selectedUserId : string;
constructor(private _activatedRoute: ActivatedRoute) {}
ngOnInit() {
this._activatedRoute.params.subscribe(params => {
this.selectedUserId = params.id;
})
}
}
更新了♂️</p>
如果您想在路由之间发送复杂对象,您可以使用共享服务(单例服务),或者如果您使用 Angular 版本 7.3 及更高版本导航接受另一个参数类型NavigationExtras
具有称为状态的属性,稍后接受对象,我们导航到目标组件,我们可以从历史对象中获取状态值window.history.state
掌握
clickHandler(row) {
this._router.navigate([`details`,row.position] , {state:{...row} });
}
细节
this.user = window.history.state;
您可以使用window.history.state
或路由器服务来获取状态值
推荐阅读
- xamarin - Xamarin.Forms Android 应用程序在 web 视图返回导航后崩溃
- c# - C#如何观察深度嵌套的分层对象?
- javascript - 右侧 0% 到 -100% 的侧边栏无法隐藏
- c++ - 仅当 cin 后面有 cout 时,代码才有效 - C++
- java - 如何在部署在 heroku 上的 react 应用程序中配置 web 服务 url 以访问也部署在 heroku 中的 java REST web 服务
- python - TfIdfVectorizer 未正确标记
- r - 如何在函数中使用 char 变量来过滤 data.table 中的列?
- c++ - C++ | printf 双倍输出
- python - Python遍历嵌套列表以检查元素是否出现超过3次
- python - pandas 相当于 countifs