角度异步管道

时间:2019-05-11 04:03:53

标签: angular telerik

我具有以下配置。 onInit调用服务,该服务通过'async |管'。我的问题是,在组件上,如何进一步处理返回的数据?我希望我的服务获取数据,并且我的 component 还要捕获响应并按照其特别需要的方式处理响应,并更新视图?

component.ts

button

HTML

public view: Observable<GridDataResult>;
constructor(private serviceTest: IfpServiceTest)
{
    this.view = serviceTest;
}
public ngOnInit(): void
{
    this.serviceTest.queryForIFP(``, this.state);
}

ifp.service.ts

<kendo-grid [data]="view | async"> </kendo-grid>

2 个答案:

答案 0 :(得分:0)

您可以根据需要使用订阅和修改数据

TS

public view: Observable<GridDataResult>;
constructor(private serviceTest: IfpServiceTest)
{
    this.view = serviceTest;
}
public ngOnInit(): void
{
    this.serviceTest.queryForIFP(``, this.state).subscribe(resp => {
       console.log(resp); // here you can do further operations 
    });
}

HTML

<!-- In html we are not useing async pipe bcs we already use subscribe in TS -->
<kendo-grid [data]="view"> </kendo-grid>

答案 1 :(得分:-1)

就像使用管道运算符(映射,敲击等)来操纵ifp.service.ts中的数据一样,您可以在组件中执行相同的操作来进一步操纵数据。 例如,这将使您能够将返回的数据存储在组件级别的变量中,或者在组件中调用函数来处理数据并返回结果,从而为您提供了仍通过异步管道处理订阅的优点。

public view: Observable<GridDataResult>;
constructor(private serviceTest: IfpServiceTest) {
  this.view = serviceTest;
  response;
}
public ngOnInit(): void {
  this.serviceTest.queryForIFP(``, this.state)
      .pipe(
          map(response => {
            this.response = response;
            return this.doSomethingWithResponse(response);
          })
      );
}

doSomethingWithResponse(response) {
  return response;
}

在您看来,与使用异步管道进行订阅之前一样:

<kendo-grid [data]="view | async"> </kendo-grid>