首页 > 解决方案 > 对 ng-select 值使用 firebase 唯一键

问题描述

角度:8.2.12

我想要做什么:用户创建新产品并为其选择包装产品的表单(另一个集合中的文档)。这些包装产品可能会发生变化(例如价格),因此我想通过为这些文档创建的唯一密钥 firebase 将它们连接起来。

我的 HTML:

<ng-select [items]="packagingProducts | async"
  bindLabel="title"
  placeholder="Select item"
  appendTo="body"
  multiple="true"
  [(ngModel)]="selectedPackaging"
  formControlName="packaging"
  bindValue="key">
</ng-select>

如您所见,我尝试使用 bindValue="key" 保存为文档创建的唯一键 firebase,我猜这是错误的,因为它作为“null”存储在 firebase 中。

我的 component.ts 中的项目

packagingProducts = this.db.collection('packaging').snapshotChanges();

似乎我可以使用文档中的所有内容(例如标题),但我不知道如何使用 firebase 唯一键(例如 fBcRUsbEl2Xxka5MKkHu)。

标签: angularfirebasegoogle-cloud-firestore

解决方案


好的,所以我想我找到了一个合适的解决方案。在这里偶然发现: https ://javebratt.com/angularfire-idfield/

获取我的 ng-select 的项目:

packagingProducts = this.db.collection('packaging').valueChanges({ idField: 'packagingproductId' });

我的 HTML:

<ng-select [items]="packagingProducts | async"
  bindLabel="title"
  bindValue="packagingproductId"
  placeholder="Select item"
  appendTo="body"
  multiple="true"
  [(ngModel)]="selectedPackaging"
  formControlName="packaging">
</ng-select>

推荐阅读