【发布时间】:2016-02-16 06:15:56
【问题描述】:
我有一个类 Page(定义如下)和服务,它返回一个可观察的 Page。如何在没有重复订阅的情况下正确使用 observable。 Plunker(不工作)http://plnkr.co/edit/8xwclHsGm2jKdW9A0fZ4?p=preview
export class Page<T>{
content: Array<T> = new Array();
last: boolean = true;
totalPages: number = 0;
totalElements: number = 0;
size: number = 0;
number: number = 0; // Page number
first: boolean = true;
numberOfElements: number = 0; //Number of elements in current page
}
export class DataGridService {
getPageForGrid(gridName:string):Observable<Page<any>>{
return anObservable; //code removed. see plunker
}
}
@Component({
selector: 'data-grid',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `<div class="row">
<ul>
<li>Page size: {{page.size}}</li>
<li>Number: {{page.number}}</li>
<li>Total pages: {{page.totalPages</li>
<li>Total Elements: {{page.totalElements}}</li>
<li>Number of elements:{{page.numberOfElements}}</li>
</ul>
<div>
<table>
<tbody>
<tr *ngFor="#row of page.content; #i = index">
<td>{{row['column1']}}</td>
<td>{{row['column2']}}</td>
</tr>
</tbody>
</table>
</div>
</div>`,
providers:[DataGridService]
})
export class DataGridComponent {
@Input gridName: string;
page: Observable<Page<any>>;
constructor(){
this.dataGridService = new DataGridService();
}
ngOnChanges(changes){
this.page = this.dataGridService.getPageForGrid(this.gridName);
}
}
【问题讨论】:
标签: angular observable