首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将可观测角度2转换为不可观测的

将可观测角度2转换为不可观测的
EN

Stack Overflow用户
提问于 2017-03-29 17:30:36
回答 2查看 1.7K关注 0票数 0

我使用的NGX数据表6.3,它不能绑定到一个可观察的集合。如何将角度可观测集合转换为常规的不可观测阵列?

这里是我为该服务所拥有的:

代码语言:javascript
复制
private _productUrl = '../../api/todos/todos.json';

constructor(private _http: Http) { }

getToDos(): Observable<IToDo[]> {
    return this._http.get(this._productUrl)
        .map((response: Response) => <IToDo[]> response.json())
        .do(data => console.log('All: ' +  JSON.stringify(data)))
        .catch(this.handleError);
}

,这是我为component.ts准备的东西。它给出了foreach循环中的一个错误:无法读取未定义的属性“长度”。

代码语言:javascript
复制
ngOnInit() {
    this._toDoService.getToDos()
        .subscribe(
          toDos => this.toDos = toDos,
          error => this.errorMessage = <any>error);

    this.rows = this.transform(this.toDos);
}

transform(source: IToDo[]): IToDo[] {
    let dest: IToDo[] = [];

    for (let sourceItem of source)
    {
      let destItem: IToDo = {
        toDoId: sourceItem.toDoId,
        name: sourceItem.name,
        priority: sourceItem.priority,
        dueDate: sourceItem.dueDate,
        completed: sourceItem.completed
      };
      dest.push(destItem);
    }

    return dest;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 17:35:55

可观察性可以是异步的,所以您不能在发出订阅调用后就简单地操作todo。相反,在订阅中操作todo:

代码语言:javascript
复制
ngOnInit() {
  this._toDoService.getToDos()
    .subscribe(
      toDos => {
        this.toDos = toDos
        this.rows = this.transform(this.toDos);
      },
      error => this.errorMessage = <any>error);
}

您的this.transform调用是同步调用的,这意味着您的调用堆栈只是一个线性的调用序列。

票数 2
EN

Stack Overflow用户

发布于 2017-03-29 17:45:34

您还可以使用异步管道展开可观察到的输入。

代码语言:javascript
复制
 <ngx-datatable
        class="material"
        [rows]="todos | async"
        ......
 </ngx-datatable>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43100311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档