【问题标题】:Ag-Grid is not showing with angular 2?Ag-Grid 未显示角度 2?
【发布时间】:2022-02-01 19:07:07
【问题描述】:

我是 Angular 2 的新手,正在尝试配置 ag-grid。控制台上有一些关于 ag-grid 的错误。我已经解决了。现在控制台上除了一个错误之外没有错误,但它与 ag-grid 无关。但仍然没有显示网格。 这是代码: 在 Package.json 添加:

"ag-grid": "^7.1.0",
    "ag-grid-ng2": "^7.1.2",
    "ag-grid-enterprise": "^7.1.0"

在布局中添加 CSS(使用 Angular 2 和 .net core(MVC)):

<link href="~/lib/ag-grid/dist/styles/ag-grid.css" rel="stylesheet" />
        <link href="~/lib/ag-grid/dist/styles/theme-fresh.css" rel="stylesheet" />

在@ngModule 中添加

 AgGridModule.withComponents([AboutComponent.AboutComponent ]),

关于是我使用 ag-grid 的组件

Here is the about component:
import { Component, OnInit } from "@angular/core";
import { Routes, RouterModule } from "@angular/router";
import PageService = require("../../services/page.service");
import { AgGridModule } from "ag-grid-ng2/main";
import { GridOptions } from "ag-grid/main";


@Component({
    //no need for selector as it will be loaded via routing
    templateUrl: "/page/index"
})
export class PageComponent implements OnInit {
    private pages;

    private gridOptions: GridOptions;
    public showGrid: boolean;
    public rowData: any[];
    private columnDefs: any[];
    public rowCount: string;


    constructor(private pageService: PageService.PageService) {
        // we pass an empty gridOptions in, so we can grab the api out

       this.gridOptions = <GridOptions>{};

        this.createRowData();

        this.createColumnDefs();

        this.showGrid = true;

    }

    ngOnInit(): void {
        //this.pages = this.pageService.getAll().subscribe(pages => this.pages = pages.Content);
    }

    private createRowData() {

        const rowData: any[] = [];


        for (let i = 0; i < 10000; i++) {

            const countryData = [];

            rowData.push({
                name: "Zeshan Munir",

                skills: {
                    android: Math.random() < 0.4,

                    html5: Math.random() < 0.4,

                    mac: Math.random() < 0.4,

                    windows: Math.random() < 0.4,

                    css: Math.random() < 0.4

                },

                address: "Lahore",

                years: Math.round(Math.random() * 100),

                proficiency: Math.round(Math.random() * 100),

                country: "Pakistan",

                continent: "Asia",

                language: "en-pk",

                mobile: createRandomPhoneNumber(),

                landline: createRandomPhoneNumber()

            });

        }


        this.rowData = rowData;

    }


    private createColumnDefs() {

        this.columnDefs = [
            {
                headerName: "#",
                width: 30,
                checkboxSelection: true,
                suppressSorting: true,

                suppressMenu: true,
                pinned: true

            },
            {
                headerName: "Employee",

                children: [
                    {
                        headerName: "Name",
                        field: "name",

                        width: 150,
                        pinned: true

                    },
                    {
                        headerName: "Country",
                        field: "country",
                        width: 150,

                        cellRenderer: countryCellRenderer,
                        pinned: true,

                        filterParams: { cellRenderer: countryCellRenderer, cellHeight: 20 }

                    },
                ]

            },
            {
                headerName: "IT Skills",

                children: [
                    {
                        headerName: "Skills",

                        width: 125,

                        suppressSorting: true,

                        cellRenderer: skillsCellRenderer,

                        filter: ""

                    },
                    {
                        headerName: "Proficiency",

                        field: "proficiency",

                        width: 120,

                        cellRenderer: percentCellRenderer,

                        filter: ""

                    },
                ]

            },
            {
                headerName: "Contact",

                children: [
                    { headerName: "Mobile", field: "mobile", width: 150, filter: "text" },
                    { headerName: "Land-line", field: "landline", width: 150, filter: "text" },
                    { headerName: "Address", field: "address", width: 500, filter: "text" }
                ]

            }
        ];

    }

这里是html:

<ag-grid-ng2 #agGrid enable-sorting="true" enable-filter="true" row-height="22" row-selection="multiple" [columnDefs]="columnDefs" [showToolPanel]="showToolPanel" [rowData]="rowData"
 (cell-clicked)="onCellClicked($event)" (column-resized)="onColumnEvent($event)"  class="ag-fresh" 
 >
   </ag-grid-ng2>

我检查了页面,这是屏幕截图

这是控制台错误,但这与 ag-grid 无关

现在我不知道为什么网格没有显示。提前致谢。

【问题讨论】:

  • This discussion 可能会帮助您指出正确的方向...似乎 Angular 可能会因为处于开发模式而陷入困境,其中 10000 行试图渲染到 ng-reflect 的 DOM 中-行数据。请务必了解 davidagee 在该线程中所说的内容
  • 感谢您的回复。我不知道 ng-reflect,但问题不在于 ng-reflect。实际上,网格是在 DOM 上渲染的,但默认情况下它的宽度是 0px。我只是设置它。它显示得很完美。

标签: angular ag-grid


【解决方案1】:

几个小时后,我才知道实际问题。每件事都很完美。实际问题是 ag-grid 宽度。默认为 0px。我只是设置它的宽度,它工作正常。

【讨论】:

  • 我遇到了类似的问题,但在我的情况下,默认情况下高度为 0px,因此请确保您也设置了高度。
  • 也有类似的问题。在我的情况下,高度和宽度曾经设置为 100%(高度:100%)。 TS新手;显然这不起作用......顺便说一句,即使Chrome开发控制台>元素在页面上突出显示了网格应该占用的适当空间......
  • 在我的例子中,将高度设置为 100% 也可能导致表单消失。试试100vh
  • 您还可以将选项domLayout 设置为'autoHeight' 以自动为元素提供所需的空间(无需在容器内垂直滚动)。
【解决方案2】:

由于ag-grid.css (ng-version="10.1.6"),网格未显示或显示 -

.ag-root-wrapper-body.ag-layout-normal {
    height: 0;
}


styles.css中修改的CSS

.ag-root-wrapper-body.ag-layout-normal {
    height: auto;
}

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 2019-07-30
    • 2019-04-20
    • 2018-03-10
    • 1970-01-01
    • 2019-07-11
    • 2017-07-30
    • 2018-09-19
    相关资源
    最近更新 更多