【发布时间】:2019-08-07 18:36:43
【问题描述】:
我总共有 3 个组件,即 filterComponent、tableViewComponent 和 Homecomponet。 filterComponent - 包含过滤器选项,用于过滤 tableViewComponent.filter 选项中的数据,如日期范围等。 tableViewComponent - 显示数据的表格格式。 homecomponent- 是基础组件,其中显示了其他 2 个组件。
我想要的是当我在 filterComponent 中更改日期范围时(我在这里调用 api 并在这里获取数据)它必须更新 tablecomponent 中的数据(我在这里也有分页)。但这里有 2 个不同的组件,我不知道如何实现。在此之前,我在主组件中包含了所有数据范围(如过滤器)选项和表格视图。现在我分成两个组件。我正在使用角度材料
//表格组件
<div class="mat-elevation-z8 responsive-table">
<table mat-table [dataSource]="dataSource" matSort>
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef> ID </th>
<td mat-cell *matCellDef="let element"> {{element.NODE_ID}} </td>
</ng-container>
<ng-container matColumnDef="CMTS Name">
<th mat-header-cell *matHeaderCellDef> CMTS Name </th>
<td mat-cell *matCellDef="let element">{{element.CMTS_NAME}} </td>
</ng-container>
<ng-container matColumnDef="Status">
<th mat-header-cell *matHeaderCellDef> Status </th>
<td mat-cell *matCellDef="let element"> {{element.STATUS}} </td>
</ng-container>
<ng-container matColumnDef="Homes On Node">
<th mat-header-cell *matHeaderCellDef>Homes On Node </th>
<td mat-cell *matCellDef="let element"> {{element.TOTAL_ADDR_CNT}} </td>
</ng-container>
<mat-paginator [length]="totalPages" [pageSize]="pageSize" [pageIndex]="pageIndex" [pageSizeOptions]="[10]"
(page)="nextPage($event)">
</mat-paginator>
</table>
</div>
//过滤组件
<div class="row" id="filter-panel">
<form [formGroup]="angForm" (ngSubmit)="onSubmit()">
<div class="col-1">
<mat-form-field class="range-datepicker">
<input [(value)]="date" matInput placeholder="Choose a date" [satDatepicker]="picker" formControlName="date"
(dateInput)="onDatePickerValueChange()">
<sat-datepicker #picker [rangeMode]="true">
</sat-datepicker>
<sat-datepicker-toggle matSuffix [for]="picker"></sat-datepicker-toggle>
</mat-form-field>
</div>
<button mat-flat-button color="primary" class="search-btn">Search</button>
</form>
</div>
//filtercomponent.ts
onSubmit() {
this.spinner.show();
this.pageIndex = 0;
this.ApiServiceObj.getMarkerDataForTableView(this.startdate, this.enddate, this.regionOption, this.pageIndex, 10).subscribe((res) => {
this.generateMapRespose(res['results']);
this.totalPages = res['totalPages'];
this.spinner.hide();
});
}
//家庭组件
<div>
<app-filter> </app-filter>
<app-table></app-table>
</div>
【问题讨论】: