Angular 7 & JQWidgets - 从另一个组件导出网格数据
Angular 7 & JQWidgets - Export Grid data from another component
我正在试验 Angular 7 和 JQWidgets。我正在处理 Grid 组件,想从另一个名为 settings 的组件导出 Grid 的数据。
我参与了演示(可用 here)并创建了以下组件:
import { Component, ElementRef, Input, AfterViewInit, ViewChild} from '@angular/core';
import { jqxDropDownListComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxdropdownlist';
import { jqxGridComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxgrid';
@Component({
selector: 'app-mydemo',
templateUrl: './mydemo.component.html'
})
export class MydemoComponent{
@ViewChild('myGrid') myGrid: jqxGridComponent;
@ViewChild('myDropDownList') myDropDownList: jqxDropDownListComponent;
exportFiletype: any;
constructor() { }
exportBtnOnClick() {
this.exportFiletype = this.myDropDownList.getSelectedItem().value;
switch (this.exportFiletype) {
case 'Excel':
this.myGrid.exportdata('xls', 'jqxGrid', true, null, true, 'https://jqwidgets.com/export_server/dataexport.php');
break;
case 'CSV':
this.myGrid.exportdata('csv', 'jqxGrid', true, null, true, 'https://jqwidgets.com/export_server/dataexport.php');
break;
};
};
}
我的问题是 this.myGrid 引用其他组件中的网格。我怎样才能直接引用它?
根据新信息更新:-
使用 https://angular.io/guide/component-interaction 模型之一在组件之间进行交互。
下面是模板变量的例子。
主要成分
//showing only html
<my-grid #myGrid><my-grid>
<my-dropdown [grid]="myGrid.jqxGrid"><my-dropdown>
组件 A(我的下拉列表)
使用 onSelect
,您也可以传递 myDropDownList 引用,这样您就可以传递任何引用
绑定到jqxDropDownList的select事件。
import { Component } from "@angular/core";
@Component({
selector: "my-dropdown",
template: `
<jqxDropDownList #myDropDownList (onSelect)="exportTo($event)"
[width]="200" [height]="25" [source]="source" [selectedIndex]="1">
</jqxDropDownList>
`
})
export class MyDropDown{
@Input() grid: jqxGridComponent
exportTo(event: any): void
{
if (this.grid) {
this.grid.doSomething()
}
}
source: string[] =
[
'Affogato',
'Americano',
'Bicerin',
'Breve'
];
}
组件 B - 网格组件
template: `
<jqxGrid #jqxGrid [theme]="'material'"
[width]="getWidth()" [source]="dataAdapter" [columns]="columns"
[pageable]="true" [autoheight]="true" [sortable]="true"
[altrows]="true" [enabletooltips]="true" [editable]="true"
[selectionmode]="'multiplecellsadvanced'" [columngroups]="columngroups">
</jqxGrid>
`
export class MyGrid {
@ViewChild('jqxGrid') jqxGrid: jqxGridComponent;
}
我正在试验 Angular 7 和 JQWidgets。我正在处理 Grid 组件,想从另一个名为 settings 的组件导出 Grid 的数据。 我参与了演示(可用 here)并创建了以下组件:
import { Component, ElementRef, Input, AfterViewInit, ViewChild} from '@angular/core';
import { jqxDropDownListComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxdropdownlist';
import { jqxGridComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxgrid';
@Component({
selector: 'app-mydemo',
templateUrl: './mydemo.component.html'
})
export class MydemoComponent{
@ViewChild('myGrid') myGrid: jqxGridComponent;
@ViewChild('myDropDownList') myDropDownList: jqxDropDownListComponent;
exportFiletype: any;
constructor() { }
exportBtnOnClick() {
this.exportFiletype = this.myDropDownList.getSelectedItem().value;
switch (this.exportFiletype) {
case 'Excel':
this.myGrid.exportdata('xls', 'jqxGrid', true, null, true, 'https://jqwidgets.com/export_server/dataexport.php');
break;
case 'CSV':
this.myGrid.exportdata('csv', 'jqxGrid', true, null, true, 'https://jqwidgets.com/export_server/dataexport.php');
break;
};
};
}
我的问题是 this.myGrid 引用其他组件中的网格。我怎样才能直接引用它?
根据新信息更新:-
使用 https://angular.io/guide/component-interaction 模型之一在组件之间进行交互。
下面是模板变量的例子。
主要成分
//showing only html
<my-grid #myGrid><my-grid>
<my-dropdown [grid]="myGrid.jqxGrid"><my-dropdown>
组件 A(我的下拉列表)
使用 onSelect
,您也可以传递 myDropDownList 引用,这样您就可以传递任何引用
绑定到jqxDropDownList的select事件。
import { Component } from "@angular/core";
@Component({
selector: "my-dropdown",
template: `
<jqxDropDownList #myDropDownList (onSelect)="exportTo($event)"
[width]="200" [height]="25" [source]="source" [selectedIndex]="1">
</jqxDropDownList>
`
})
export class MyDropDown{
@Input() grid: jqxGridComponent
exportTo(event: any): void
{
if (this.grid) {
this.grid.doSomething()
}
}
source: string[] =
[
'Affogato',
'Americano',
'Bicerin',
'Breve'
];
}
组件 B - 网格组件
template: `
<jqxGrid #jqxGrid [theme]="'material'"
[width]="getWidth()" [source]="dataAdapter" [columns]="columns"
[pageable]="true" [autoheight]="true" [sortable]="true"
[altrows]="true" [enabletooltips]="true" [editable]="true"
[selectionmode]="'multiplecellsadvanced'" [columngroups]="columngroups">
</jqxGrid>
`
export class MyGrid {
@ViewChild('jqxGrid') jqxGrid: jqxGridComponent;
}