Angular 角网格custum格式化程序-引导ngbTooltip不工作

Angular 角网格custum格式化程序-引导ngbTooltip不工作,angular,bootstrap-4,slickgrid,Angular,Bootstrap 4,Slickgrid,我在我的带引导4的angular应用程序中使用angular slickgrid。我使用custum格式化程序处理一个列,详细信息如下: cusum格式化程序代码(cusum.formatter.ts文件): 在运行应用程序时,我已检查无法查看tootip“详细信息”。所以问题是引导ngbTooltip不能在angular slickgrid中与custum格式化程序一起工作。请注意,我是angular slickgrid的作者 不能在格式化程序中直接使用Angular,原因是该库是javasc

我在我的带引导4的angular应用程序中使用angular slickgrid。我使用custum格式化程序处理一个列,详细信息如下:

cusum格式化程序代码(cusum.formatter.ts文件):


在运行应用程序时,我已检查无法查看tootip“详细信息”。所以问题是引导ngbTooltip不能在angular slickgrid中与custum格式化程序一起工作。

请注意,我是angular slickgrid的作者

不能在格式化程序中直接使用Angular,原因是该库是javascript/jQuery库的包装器,格式化程序需要一个同步函数立即返回字符串(html格式),Angular不会立即返回,在返回之前至少需要一个周期

答案就在这一点上,代码也在这一点上。您需要使用
asyncPostRender

从演示中获取代码示例

导出类MyComponent实现OnInit{
prepareGrid(){
此字段的定义=[
{
id:“assignee2”,
名称:“具有角度组件的受让人”,
字段:“受让人”,
可过滤:正确,
//若要加载角度组件,不能使用格式化程序,因为角度组件至少需要1个周期来渲染所有内容
//您可以使用PostRenderer,但可以直观地看到显示的数据,
//这就是为什么使用常规格式化程序(如果需要,使用jQuery)而不是角度组件更好的原因
asyncPostRender:this.renderAngularComponent.bind(this),
参数:{
组件:CustomTitleFormatterComponent,
angularUtilService:this.angularUtilService,
exportCustomFormatter的complexFieldLabel:'assignee.name'//
},
exportCustomFormatter:Formatters.complexObject,
}
]; 
this.gridOptions={
asyncEditorLoading:false,
enableAsyncPostRender:true,//对于角度后渲染器,不要忘记启用它
asyncPostRenderDelay:0,//还要确保删除渲染它的任何延迟
};
}
}
<>但是,我强烈建议您考虑使用一个普通的HTML JavaScript自定义格式化程序。原因很简单,因为具有Angular的格式化程序定义为async,所以它们的速度要慢得多(您将看到它们在网格中加载/渲染,因为渲染需要一个周期)


这是可行的,但我强烈建议重新考虑只使用普通html格式化程序(尽管我添加了一个演示,但我从不使用角度格式化程序)

感谢您的建议,是的,带有Angular的格式化程序被定义为async,它们的速度要慢得多。因此,我也更喜欢使用纯html javascript custum格式化程序。
export const detailFormatter: Formatter = (row: number, cell: number, value: any, columnDef: Column, dataContext: any, grid?: any) => {
const template = `<button ngbTooltip="Details" class="btn btn-outline-secondary mr-2 btn-floating btn-blue-grey btn-sm"><i class="fa fa-info"></i></button>`;
return template; }
 this.columnDefinitions = [{formatter: detailFormatter,  id: 'detail', name: '', field: 'detail', minWidth: 50,width: 50, maxWidth: 50}, ....other columns}