我使用的NGX数据表6.3,它不能绑定到一个可观察的集合。如何将角度可观测集合转换为常规的不可观测阵列?
这里是我为该服务所拥有的:
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循环中的一个错误:无法读取未定义的属性“长度”。
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;
}发布于 2017-03-29 17:35:55
可观察性可以是异步的,所以您不能在发出订阅调用后就简单地操作todo。相反,在订阅中操作todo:
ngOnInit() {
this._toDoService.getToDos()
.subscribe(
toDos => {
this.toDos = toDos
this.rows = this.transform(this.toDos);
},
error => this.errorMessage = <any>error);
}您的this.transform调用是同步调用的,这意味着您的调用堆栈只是一个线性的调用序列。
发布于 2017-03-29 17:45:34
您还可以使用异步管道展开可观察到的输入。
<ngx-datatable
class="material"
[rows]="todos | async"
......
</ngx-datatable>https://stackoverflow.com/questions/43100311
复制相似问题