Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了打字稿 – 如何在angular2中使用带有Observable的ag-grid?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在互联网上做了很多研究,但仍然无法将它们粘合在一起.我有一个angular2应用程序,带有来自http的Observable数据源,并且想要使用ag-grid.问题是我只有一个加载屏幕而不是数据.我用fiddler调查过,数据在 JSON中成功加载并正确加载.这是我的代码

order.service.ts

import { Injectable }    from '@angular/core';
import { Headers,http,Response } from '@angular/http';

import { Observable }    from 'rxjs/Observable';

import { Order } from './order';

@Injectable()
export class orderservice {

  private ordersUrl = '(Some JSON data source via Internet)';  // URL to web api

  constructor(private http: http) { } 

  getorders(): Observable<Order[]> {
    return this.http.get(this.ordersUrl)
        .map(this.extractData)
        .catch(this.handleError);
  }

  save(order: Order): Observable<Order>  {
    if (order.id) {
      //return this.put(order);
    }
    return this.post(order);
  }

  delete(order: Order) {
    let headers = new Headers();
    headers.append('Content-Type','application/json');

    let url = `${this.ordersUrl}/${order.iD}`;

    return this.http
       .delete(url,headers)
       .map(this.extractData)
       .catch(this.handleError);
  }

  // Add new Order
  private post(order: Order): Observable<Order> {
    let headers = new Headers({
      'Content-Type': 'application/json'});

    return this.http
               .post(this.ordersUrl,JSON.Stringify(order),{headers: headers})
               .map(this.extractData)
               .catch(this.handleError);
  }

    private extractData(res: ResponsE) {
        let body = res.json();
        return body.data || { };
    }

    private handleError (error: any) {
        // In a real world app,we might use a remote logging infrastructure
        // We'd also dig deeper into the error to get a better message
        let errMsg = (error.messagE) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }
}

order.component.ts

import { Component,OnInit } from '@angular/core';
import { Router }            from '@angular/router';

import { AgGridNg2 } from 'ag-grid-ng2/main';

import { Order }                from './order';
import { orderservice }         from './order.service';


@Component({
  SELEctor: 'my-orders',templateUrl: 'app/order/order.html',directives: [ AgGridNg2 ]
})

export class OrderComponent implements OnInit {
    errormessage: String;
    orders: Order[];
    SELEctedOrder: Order;
    addingOrder = false;
    error: any;
    mode = 'Observable';
    gridoptions: any = [];

    ngOnInit() {
        this.getorders();
    }

    columnDefs = [(Some deFinition)];

    getorders() {
        this.orderservice
            .getorders()
            .subscribe(
               orders => this.orders = orders,error =>  this.errormessage = <any>error);
    }

    constructor(
        private router: Router,private orderservice: orderservicE) {
            orderservice
                .getorders()
                .subscribe(
                   orders => this.orders = orders,error =>  this.errormessage = <any>error);

            this.gridoptions = {
                rowData: this.orders,columnDefs: this.columnDefs,enableColResize: true,enableSorTing: true,enableFilter: true
            }
        }

    onSELEct(order: Order) {
        this.SELEctedOrder = order;
        this.addingOrder = false;
    }
}

上面的代码是从Google教程中复制的,只进行了一些修改并仅用于演示.

这是HTML文件,它只包含一个ag-grid标签

<ag-grid-ng2 #agGrid style="width: 100%; height: 350px;" class="ag-fresh" [gridoptions]="gridoptions">
</ag-grid-ng2>

提前谢谢你拯救我的生命.

解决方法

好的,所以使用Observable的流程看起来很好,但是你没有将订单绑定到网格:

<ag-grid-ng2 
    #agGrid 
    style="width: 100%; height: 350px;" 
    class="ag-fresh" 

   [gridoptions]="gridoptions"
   [rowData]="orders">
</ag-grid-ng2>

或者,您可以将gridoptions的设置移动到subscribe回调中:

private orderservice: orderservicE) {
        orderservice
            .getorders()
            .subscribe(
                orders => { 
                    this.orders = orders;

                    this.gridoptions = {
                        rowData: this.orders,enableFilter: true
                    };
                },error =>  this.errormessage = <any>error
            );
    }

This Github Repository有一些关于如何使用ag-grid-ng2的好例子.

大佬总结

以上是大佬教程为你收集整理的打字稿 – 如何在angular2中使用带有Observable的ag-grid?全部内容,希望文章能够帮你解决打字稿 – 如何在angular2中使用带有Observable的ag-grid?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。