Ag-Grid Ссылка со ссылкой в ячейке
Я создаю угловое приложение с ag-сетью, и у меня возникла проблема с попыткой выяснить, как поместить ссылку в ячейку. Может ли кто-нибудь помочь мне в этом вопросе? Спасибо
Ответы
Ответ 1
Пожалуйста, проверьте это демо
cellRenderer: function(params) {
return '<a href="https://www.google.com" target="_blank" rel="noopener">'+ params.value+'</a>'
}
В этой демонстрации значение ячейки для столбца city является гиперссылкой.
Ответ 2
Я боролся с этим на днях, и это было немного сложнее, чем я думал. Я закончил с созданием компонента рендерера, на который я отправляю ссылку, и для его работы нужно было немного магии NgZone. Вы можете использовать его в своем определении столбца следующим образом:
cellRendererFramework: RouterLinkRendererComponent,
cellRendererParams: {
inRouterLink: '/yourlinkhere',
}
Компонент, где inRouterLink - ссылка, которую вы отправляете, а params.value - значение ячейки. Это означает, что вы можете направить свой угловой маршрут, который может выглядеть примерно так: "yourlink/: id". Вы также можете немного упростить это, если не хотите более общего решения, не отправляя ссылку и просто жестко кодируя ссылку в шаблоне и не используя cellRendererParams.
import { Component, NgZone } from '@angular/core';
import { Router } from '@angular/router';
import { AgRendererComponent } from 'ag-grid-angular';
@Component({
template: '<a [routerLink]="[params.inRouterLink,params.value]" (click)="navigate(params.inRouterLink)">{{params.value}}</a>'
})
export class RouterLinkRendererComponent implements AgRendererComponent {
params: any;
constructor(
private ngZone: NgZone,
private router: Router) { }
agInit(params: any): void {
this.params = params;
}
refresh(params: any): boolean {
return false;
}
// This was needed to make the link work correctly
navigate(link) {
this.ngZone.run(() => {
this.router.navigate([link, this.params.value]);
});
}
}
ОБНОВЛЕНИЕ: я написал сообщение в блоге об этом: https://medium.com/ag-grid/enhance-your-angular-grid-reports-with-formatted-values-and-links-34fa57ca2952
Ответ 3
Это немного устарело, но это может помочь кому-то. Решение с машинописным текстом на Angular 5 аналогично тому, что предлагает COG. В файле typescript файла определение столбца может содержать пользовательскую функцию рендеринга ячейки.
columnDefs = [
{headerName: 'Client', field: 'clientName' },
{headerName: 'Invoice Number', field: 'invoiceNumber',
cellRenderer: (invNum) =>
'<a href="/invoice/${invNum.value}" >${invNum.value}</a>' },
];
Лямбда-функция вызывается при рендеринге ячейки. "Значение" передаваемого параметра - это то, что вы можете использовать для создания настраиваемого рендеринга.
Ответ 4
Вместо использования href в cellRenderer лучше использовать инфраструктуру cellrenderer, так как в ней работает маршрутная ссылка. Еще одним недостатком является то, что если вы используете href, тогда все угловое приложение будет перезагружено снова, оно меняет состояние навигации с обязательного на полугодовое состояние. Угловой роутер работает на императивном состоянии.