在每一行内添加 link - ngx-datatable
Add link inside each row - ngx-datatable
我是 angular 的新手。单击每一行的第一列时,我试图在 ngx-datatable 的每一行上添加一个 link。这应该根据行 ID 将我带到另一个页面,例如,如果我有一个 table 课程,第一列是课程的名称。当我单击每一行的课程名称时,我想保存整个行 ID 并使用此 ID 调用一个函数,这应该将我带到每门课程的适当页面。
课程名称应该是可见的 link(可点击),上面有光标:指针。
如果有任何想法可以帮助我完成这项工作,我将不胜感激。
这是我迄今为止尝试过的方法(link 不起作用):
viewCourseTrainings(id: number){
this.router.navigate(['/home-page/mentor-trainings/'+ id])
}
<ngx-datatable
class="material"
[rows]="rows"
[columns]="columns"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'"
[limit]="5">
<ngx-datatable-column name="Name" prop="name">
<ng-template let-row="row" let-value="value">
<a (click)="viewCourseTrainings(value.id)">{{value.name}}</a>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
到目前为止你的代码看起来不错,我建议你传递整个值并访问 TS 中的 id
<ngx-datatable-column prop="$key">
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
<a class="nav-link edit" (click)="viewCourseTrainings(value)">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
</a>
</ng-template>
</ngx-datatable-column>
对应TS
viewCourseTrainings(valObj: any){
this.router.navigate(['/home-page/mentor-trainings/'+ valObj.id])
}
谢谢你的帮助,我设法解决了这个问题。
<ngx-datatable-column name="Name" prop="name">
<ng-template ngx-datatable-cell-template let-row="row" let-value="value">
<a class="nav-link" (click)="viewCourseTrainings(row)">
{{row.name}} <!-- or {{value}} -->
</a>
</ng-template>
</ngx-datatable-column>
而且TS和你说的一模一样
实际上有一种更简单的方法可以做到这一点。您可以使用 routerLink 并使用双大括号传递行 ID。这样就不需要在 ts 文件中定义任何东西。看我的例子:
<ngx-datatable-column name="Actions" [width]="80">
<ng-template let-row="row" ngx-datatable-cell-template>
<a routerLink="/mentor-trainings/{{row.id}}">View training</a>
</ng-template>
</ngx-datatable-column>
我是 angular 的新手。单击每一行的第一列时,我试图在 ngx-datatable 的每一行上添加一个 link。这应该根据行 ID 将我带到另一个页面,例如,如果我有一个 table 课程,第一列是课程的名称。当我单击每一行的课程名称时,我想保存整个行 ID 并使用此 ID 调用一个函数,这应该将我带到每门课程的适当页面。 课程名称应该是可见的 link(可点击),上面有光标:指针。 如果有任何想法可以帮助我完成这项工作,我将不胜感激。
这是我迄今为止尝试过的方法(link 不起作用):
viewCourseTrainings(id: number){
this.router.navigate(['/home-page/mentor-trainings/'+ id])
}
<ngx-datatable
class="material"
[rows]="rows"
[columns]="columns"
[columnMode]="'force'"
[headerHeight]="50"
[footerHeight]="50"
[rowHeight]="'auto'"
[limit]="5">
<ngx-datatable-column name="Name" prop="name">
<ng-template let-row="row" let-value="value">
<a (click)="viewCourseTrainings(value.id)">{{value.name}}</a>
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
到目前为止你的代码看起来不错,我建议你传递整个值并访问 TS 中的 id
<ngx-datatable-column prop="$key">
<ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
<a class="nav-link edit" (click)="viewCourseTrainings(value)">
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
</a>
</ng-template>
</ngx-datatable-column>
对应TS
viewCourseTrainings(valObj: any){
this.router.navigate(['/home-page/mentor-trainings/'+ valObj.id])
}
谢谢你的帮助,我设法解决了这个问题。
<ngx-datatable-column name="Name" prop="name">
<ng-template ngx-datatable-cell-template let-row="row" let-value="value">
<a class="nav-link" (click)="viewCourseTrainings(row)">
{{row.name}} <!-- or {{value}} -->
</a>
</ng-template>
</ngx-datatable-column>
而且TS和你说的一模一样
实际上有一种更简单的方法可以做到这一点。您可以使用 routerLink 并使用双大括号传递行 ID。这样就不需要在 ts 文件中定义任何东西。看我的例子:
<ngx-datatable-column name="Actions" [width]="80">
<ng-template let-row="row" ngx-datatable-cell-template>
<a routerLink="/mentor-trainings/{{row.id}}">View training</a>
</ng-template>
</ngx-datatable-column>