【发布时间】:2020-10-26 12:33:44
【问题描述】:
有人已经在 Angular 上使用了 ng-table,并且可以弄清楚如何将它与 firebase 集合一起使用?
我正在尝试使用ng-table(最后一个示例)在 Angular 10 上对我的集合进行排序和过滤,因此我尝试将代码中的常量更改为我的对象,但它没有用。我想我需要将我的对象转换为一个数组,所以我尝试了this library 来做到这一点,也没有工作。还试图在 stackoverflow 上寻找这个,我发现的只是其他有同样问题的人。
这是我需要执行此操作的确切功能。 COUNTRIES 是来自 *countries.ts 的数组。 country.service.ts 上的功能如下。
private _search(): Observable<SearchResult> {
const {sortColumn, sortDirection, pageSize, page, searchTerm} = this._state;
// 1. sort
let countries = sort(COUNTRIES, sortColumn, sortDirection);
// 2. filter
countries = countries.filter(country => matches(country, searchTerm, this.pipe));
const total = countries.length;
// 3. paginate
countries = countries.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize);
return of({countries, total});
}
}
这就是我对发现的库的尝试:
this.items = this.firestore.collection('users').valueChanges();
alert( O2A(this.items) );
但这对我不起作用。
谢谢!
【问题讨论】:
-
你什么时候从你的服务中调用 _search() ?您尝试使用 O2A 方法实现什么目标? ValuesChanges 已经返回了一个包含数组的 observable。
-
我收到此错误:“Observable
”类型缺少“User[]”类型中的以下属性:长度、弹出、推送、连接等 25 个。 -
你得到这个是因为它是一个被返回的 observable。它是一个异步对象,在订阅时,每次更新时都会发出集合中的数据(在您的 firebase 集合上创建、更新、删除)。您首先需要订阅它以通过执行以下操作来请求数组:
this.items.subscribe(res => alert(O2A(res)))。不需要的时候别忘了取消订阅,否则会在应用中造成数据泄露,严重影响应用性能。 -
仍然出现错误。您能否获得一个完整的示例来说明如何解决这个问题并更改 ng-table 上的 firebase 集合的示例数据?
-
你能在我发表评论后用你试图实现的目标来编辑你的问题吗?我对您的最终目标和实施一无所知。您的两段代码似乎与我无关。它们是如何相互作用的?
标签: angular typescript firebase google-cloud-firestore ng-bootstrap