Angular 调整列的大小,使其在可见时适合隐藏的ag栅格

Angular 调整列的大小,使其在可见时适合隐藏的ag栅格,angular,ag-grid,Angular,Ag Grid,通常我只需使用gridReady事件,获取api并调用sizeColumnsToFit() 导出类MyGridApplicationComponent{ 私有网格选项:网格选项; 私有showGrid2:错误; 构造函数(){ this.gridOptions={ onGridReady:this.gridReady.bind(), .... }; } gridReady(参数){ params.api.sizeColumnsToFit(); } .... 但是,我有一个隐藏选项卡中的网格,因

通常我只需使用gridReady事件,获取api并调用sizeColumnsToFit()

导出类MyGridApplicationComponent{
私有网格选项:网格选项;
私有showGrid2:错误;
构造函数(){
this.gridOptions={
onGridReady:this.gridReady.bind(),
....
};
}
gridReady(参数){
params.api.sizeColumnsToFit();
}
....
但是,我有一个隐藏选项卡中的网格,因此当调用gridReady事件时,宽度为0(在控制台中获取消息:“尝试调用sizeColumnsToFit(),但网格返回时宽度为零,可能网格在屏幕上还不可见?”)

网格仅在单击按钮后可见
显示网格

[编辑]我尝试修改@antiream下面的建议(看看父div上的*ngIf是否起了作用),这对我(过度)简化的问题版本有效:请参阅

这都是在嵌套选项卡组件的上下文中进行的,其中ag网格不在第一个选项卡上。我尝试在包含嵌套选项卡内容的div中使用*ngIf:


即使DOM显示ag网格不存在,在选择第二个选项卡之前仍会调用ag网格的gridReady事件。请参阅

  • :
  • 
    )在嵌套选项卡组件上创建一个公开可用的“hasBeenActive”变量,然后在ag网格上的*ngIf direct中使用它:

    导出类嵌套的数据库组件{
    ...
    public hasbeenanctive:boolean=false;
    激活(){
    this.active=true;
    this.hasbeenanctive=true;
    }
    ....
    
    
    如果存在,则将不应立即初始化的任何嵌套选项卡的内容包装到模板中:

    @组件({
    选择器:“嵌套选项卡”,
    模板:`
    `
    })
    导出类NestedTabComponent实现OnInit{
    @ContentChild(TemplateRef)内容;
    ....
    
    
    渲染的第二个栅格:


    我以前处理过这个问题。我的解决方案是在网格组件上设置一个
    *ngIf
    ,当选项卡被选中时,这个值变为真。在某些情况下,您希望网格在创建后保持在那里,而不必每次都创建,因此您可以使用类似于
    *ngIf=“tabSelected | tabhasselectedbefore”的内容
    。在第一次选择选项卡时,您必须将第二个变量设置为true。为什么网格在隐藏选项卡中?这就是您尝试的方法吗?请详细说明您尝试实现的目的是什么?@antirealm是的,我使用了类似的方法,将*ngIf设置为父div,以及其他。不幸的是,当我尝试某些方法时在我的标签组件中类似。这里有一个从你那里派生出来的解决方案当然有效!我试图避免引用一个较低阶的ui元素,但我认为这是我找到的更好的解决方案(将整个内容包装在ng模板中,并使我的嵌套标签在ng容器中使用,如果存在的话:)这应该被选为一个有效的答案(我个人使用了解决方案2.a,它起了作用)。