【问题标题】:ag-grid won't scroll after rendering渲染后 ag-grid 不会滚动
【发布时间】:2019-06-10 23:59:59
【问题描述】:

已解决:原来我导入了不正确的 CSS,这会导致一些非常严重的问题,请阅读答案了解更多详情

实施 ag-grid 后,数据显示,但我根本无法滚动。

我在这里做了一个堆栈闪电战:https://stackblitz.com/edit/angular-ytr1jj。 stackblitz 按预期工作,但由于某种原因,完全相同的代码无法在我的应用程序中滚动。

我尝试了多种渲染行的方法。 我尝试弄乱 CSS 以查看是否有任何东西导致滚动条重叠。

到目前为止还没有运气。我认为这可能与“指针事件”有关......

更新:我认为虚拟滚动需要在行上捕获鼠标事件,并且由于某种原因没有捕获鼠标事件因此无法滚动

<ag-grid-angular
  #agGrid
  style="width: 100%; height: 600px;"
  class="ag-theme-balham"
  [rowData]="rowData" 
  [columnDefs]="columnDefs"
  >
</ag-grid-angular>


columnDefs = [
    { headerName: 'Make', field: 'make' },
    { headerName: 'Model', field: 'model' },
    { headerName: 'Price', field: 'price' }
  ];

  rowData = [
    { make: 'Toyota', model: 'Celica', price: 35000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 },
    { make: 'Ford', model: 'Mondeo', price: 32000 }
  ];

更新 2:如果我将 pointer-events: none 设置为 .ag-center-cols-viewport,我可以让滚动条滚动。 html 似乎在滚动时更新,并且行索引 row-id 等在滚动时更新,但是表视图似乎没有显示当前插入到 ref="ag-center-cols-viewport 的行"(它们出现在 html 中但不可见)

【问题讨论】:

    标签: ag-grid ag-grid-angular


    【解决方案1】:

    回答

    好吧,这有点荒谬,但它就是这样

    BAD
    @import "~ag-grid/dist/styles/ag-grid.css";
    @import "~ag-grid/dist/styles/ag-theme-material.css";
    
    GOOD
    @import 'ag-grid-community/dist/styles/ag-grid.css';
    @import 'ag-grid-community/dist/styles/ag-theme-material.css';
    

    再次检查我的 package.json 后,我注意到我在依赖项下有 3 个 ag-grid 的东西

    "ag-grid",
    "ag-grid-angular",
    "ag-grid-community"
    

    我导入的 CSS 来自旧版本的 "ag-grid"。 从 package.json 中删除 "ag-grid" 后,我导入了正确的 CSS,一切都立即生效......

    最终的好代码

    // package.json
        "ag-grid-angular": "^20.0.0",
        "ag-grid-community": "^20.0.0",
    
    // _vendor.scss where I import most my node_modules css
    
        // @import "~ag-grid/dist/styles/ag-grid.css";
        // @import "~ag-grid/dist/styles/ag-theme-material.css";
        @import 'ag-grid-community/dist/styles/ag-grid.css';
        @import 'ag-grid-community/dist/styles/ag-theme-material.css';
    
    

    【讨论】:

    • 您还应该从 ag-grid-community 导入 ag 网格部件,否则您的包将在您导入的每个模块中包含完整的网格
    猜你喜欢
    • 2016-06-22
    • 2021-12-08
    • 2021-11-09
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2019-01-13
    相关资源
    最近更新 更多