【发布时间】:2021-05-26 02:29:49
【问题描述】:
我需要在包含与特定条件匹配的数据的行的顶部添加特定控件。这些标准缺少需要使用内联编辑功能添加的必需信息。我们想要的是一个导航控件,它位于第一个匹配行的顶部,并通过单击“下一步”将您引导到下一个,这将使网格向上滚动到下一个匹配行,这将在顶部显示另一个控件及以上允许导航到下一个匹配行或转到上一个。
假设我们有一个汽车列表,我们希望用户浏览价格低于或等于 45k 的汽车行,您会看到如下内容:
在下一次点击时,您会看到类似:
我相信为了拥有这个功能,我需要一个对行的引用,并在 DOM 中注入一个相对于单击每一行的组件。但我不知道该怎么做。我尝试将组件动态添加到第一个匹配行的本机元素,如下所示:
onGridReady(params) {
this.api = params.api;
this.columnApi = params.columnApi;
params.api.forEachNode((node, index) => {
if(node.data.price <= 45000) {
this.matchingIndexes.push(index);
}
});
let firstRowRef = this.gridElementRef.nativeElement.querySelectorAll(`[row-index="${this.matchingIndexes[0]}"]`)[1];
const factory = this.factoryResolver.resolveComponentFactory(PagingOverlayComponent)
const component = factory.create(firstRowRef.parentInjector)
this.viewContainerRef.insert(component.hostView);
}
我希望能够以某种方式相对于它必须附加的行插入组件,以便我可以将它定位在它上面。这是我能走的最远的:
关于如何实现这一点的任何想法?
【问题讨论】:
-
您需要将元素附加到文档正文 - 这应该可以正常工作。另一种解决方案是利用自定义单元格渲染器组件在单元格内创建控件,这更容易实现:ag-grid.com/documentation/angular/component-cell-renderer