如何将 dx-data-grid 及其工具包装到另一个组件中并使其成为控制器?

How to wrap dx-data-grid and the it's tools into another component and make it controller?

我们正在用 devexpress.com 开发一个 angular 应用程序,我想用 dx-data-grid 制作 'my-grid' 控制器,我想包装 dx-data-网格工具进入我的但是有问题,你能帮我解决吗?

dx-data-grid.component.html

<dx-data-grid id="gridContainer"
            [dataSource]="dataSource"
            [showBorders]="true"
            [allowColumnResizing]="true"
            [columnAutoWidth]="true"
            [allowColumnReordering]="true">

    <!-- filter -->
    <dxo-filter-row [visible]="true"></dxo-filter-row>
    <dxo-header-filter [visible]="true"></dxo-header-filter>

    <!-- column chooser -->
    <dxo-column-chooser [enabled]="true"></dxo-column-chooser>

   **<!-- COLUMN WILL APPEAR TO HEAR -->**

    <!-- summary -->
    <dxo-summary>
        <dxi-total-item column="branchId" summaryType="count"></dxi-total-item>

        <dxi-total-item column="docKind" summaryType="sum">
            <!--<dxo-value-format type="decimal" [precision]="2"></dxo-value-format>-->
        </dxi-total-item>
    </dxo-summary>

    <!-- pagination -->
    <dxo-paging [pageSize]="10"></dxo-paging>
    <dxo-pager [showPageSizeSelector]="true" [allowedPageSizes]="false" [showInfo]="true">
    </dxo-pager>

</dx-data-grid>

my-grid.component.html

<my-grid [dataSource]="dataSource" 
        [showBorders]="true" 
        [allowColumnResizing]="true" 
        [columnAutoWidth]="true"
        [allowColumnReordering]="true">

    <!-- columns -->
    <dxi-column dataField="Product_ID"></dxi-column>
    <dxi-column dataField="Product_Name" [width]="250"></dxi-column>
    <dxi-column dataField="Product_Cost" caption="Cost" dataType="number" format="currency"></dxi-column>
    <dxi-column dataField="Product_Sale_Price" caption="Sale Price" dataType="number" format="currency"></dxi-column>
    <dxi-column dataField="Product_Retail_Price" caption="Retail Price" dataType="number" format="currency"></dxi-column>
    <dxi-column dataField="Product_Current_Inventory" caption="Inventory"></dxi-column>

</my-grid>

我可以输入 dx-data-grid 选项,但 dxi-clumns 我不能。

my-grid.component.ts

@Input()
public dataSource: string;

@Input()
public columnAutoWidth: boolean;

@Input()
public allowColumnReordering: boolean;

@Input()
public showBorders: boolean;

@Input()
public allowColumnResizing: boolean;

@ViewChild(DxDataGridComponent) dxDataGrid: DxDataGridComponent;

ngAfterViewInit() {
    this.dxDataGrid.dataSource = this.dataSource;
    this.dxDataGrid.columnAutoWidth = this.columnAutoWidth;
    this.dxDataGrid.allowColumnReordering = this.allowColumnReordering;
    this.dxDataGrid.showBorders = this.showBorders;
    this.dxDataGrid.allowColumnResizing = this.allowColumnResizing;
}

所以我需要在我的网格中输入 dxi-columns,在另一种情况下可能 dxo-paging 等等。 谢谢你

这是我的解决方案。 my-grid.zip