Kendo UI网格显示JSON对象为[object Object]

时间:2019-01-26 19:22:19

标签: angular typescript kendo-grid

我正在通过获取方法将函数传递给Kendo Grid字段之一。该函数在console.log上完美返回,但是在Kendo Grid中,仅返回[object Object]。

这是情况。我目前正在使用两种服务:
1. ReviewService
2. UserService
通过使用 ReviewService 返回Kendo Grid中的数据。数据之一是“ id” 。我创建了一个函数,用于根据“ id”从 UserService 中找到用户名。因此,我在fetch方法中使用了该函数。

获取方法

protected fetch(state: any): Observable<GridDataResult> {
    this.loading = true;
    this.pagination = new Pagination(state.skip, state.take);

  return this.ReviewService.getByCriteria(this.pagination, this.apiVisa)
    .pipe(
      map(
        response =>
          <GridDataResult>{
            data: response["objectList"].map(review => ({
              id: review.id,
              email: this.displayUser(review.id)
            })),
            total: response["totalRecords"]
          }
      ),
      tap(() => (this.loading = false))
    );
  }

功能

public getUser(value): Observable<any> {
  return this.UserService.getByGuid(value, this.apiVisa);
}

public displayUser(id) {
    console.log("GUID: ", id);
    return this.getUser(id)
      .pipe(
      map((x: any) => 
        x.data
      ))
      .subscribe(x => {
        this.getItem = x.username;
        // return this.getItem;
        console.log("Username: ", x.username);
        return x.username;
        // return this.getItem;
      })
  }

预期结果
在Kendo Grid中:阿迪巴
在console.log中:Adibah

实际结果
在Kendo Grid中:[object Object]
在console.log中:Adibah

1 个答案:

答案 0 :(得分:0)

在您的displayUser方法中,您返回的是Subscription,而不是实际的x.username。您不能只返回.subscribe中的函数来传递其值。您可以使用combineLatest运算符等待第二个可观察对象完成。

因此,您必须从.subscribe中删除displayUser,并将combineLatest链接到getByCriteria的管道