【发布时间】:2020-10-18 01:07:49
【问题描述】:
我想从我的 firebase 产品列表中呈现特定产品。
我无法在我的 firebase 列表中找到密钥:-
<tbody>
<tr *ngFor="let p of products$ | async">
<td>{{p.title}}</td>
<td>{{p.price}}</td>
<td>
<a [routerLink]="['/admin/products/',p.$key]">Edit</a>
</td>
</tr>
</tbody>
我的浏览器将我重定向到一个未定义的对象:
http://localhost:4200/admin/products/undefined
在这里发布我的 Firebase 列表:
我的类别列表也遇到了同样的问题:-
这里是我使用的代码:-
<div class="form-group">
<label for="category">Category</label>
<select #category="ngModel" ngModel name="category" id="category" type="text" class="form-control" required>
<option value=""></option>
<option *ngFor="let c of categories$ | async" [value]="c.$Key" >
{{ c.name }}
</option>
</select>
<div class="alert alert-danger" *ngIf="category.touched && category.invalid">
Category is required.
</div>
</div> ....
.....
export class ProductFormComponent implements OnInit {
categories$;
constructor(private router: Router,
categoryService: CategoryService,
private productService: ProductService) {
this.categories$ = categoryService.getCategories();
}
save(product) {
this.productService.create(product);
console.log(product)
// this.router.navigate(['admin/products'])
}
如果我查看控制台日志,它会显示类别未定义:- Category is undefined
因此,当我使用类别创建产品时,即使我从下拉列表中选择了我的类别,我也无法找到类别键。
所以,请帮帮我。
【问题讨论】:
-
从您的 firebase 快照中,我没有在产品对象中看到任何
$key字段。因此p.$key将是undefined。您应该在产品对象调用中添加一个字段$key。 -
-LQU8HompwKex4icbWdO,-LQUTngLsCaVC3KUF-yn 这些是唯一的 id 或键。根据我的理解,当您创建对象时,这些键是自动创建的。对吗?如果我想访问该键或者我该怎么做。我也检查过以前的帖子,我注意到 $key 对他们来说效果很好,但在我的情况下它不工作。所以,请在这方面帮助我。
标签: angular firebase firebase-realtime-database