【发布时间】:2020-04-19 15:30:43
【问题描述】:
我正在尝试运行此 *ngFor="courses of getCoursesByCategory(categories.key)" 以根据类别参数获取课程。我没有收到任何错误,但没有显示课程。我有一个看起来像这样Firebase Console 的数据库。我该怎么办?
courses.component.html:-
<mat-tab-group>
<mat-tab *ngFor="let categories of categories" [label]="categories.label">
<div class="cardList">
<ng-container *ngFor="let courses of getCoursesByCategory(categories.key)">
<mat-card class="cardListItem">
<mat-card-header>
<div mat-card-avatar class="example-header-image"></div>
<mat-card-title>{{ courses.title }}</mat-card-title>
</mat-card-header>
<img mat-card-image [src]="courses.urlImage">
<mat-card-content>
<p>{{ courses.description }}</p>
</mat-card-content>
<mat-card-actions>
<button mat-flat-button color="primary">Add Course</button>
</mat-card-actions>
</mat-card>
</ng-container>
</div>
</mat-tab>
</mat-tab-group>
courses.component.ts:-
import { Component, OnInit, OnDestroy } from '@angular/core';
import { CategoryService } from 'src/app/modules/common/services/category.service';
import { CourseService } from '../../services/course.service';
import { mergeMap, map } from 'rxjs/operators';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-courses',
templateUrl: './courses.component.html',
styleUrls: ['./courses.component.css']
})
export class CoursesComponent implements OnInit, OnDestroy {
categories: any[];
courses: any[];
sub: Subscription;
constructor(private categoryService : CategoryService, private courseService : CourseService) { }
ngOnInit() {
this.sub = this.categoryService.getAllcategories()
.pipe(
mergeMap(categories => this.courseService.getAllCourses().pipe(
map(courses => [categories, courses])
))).subscribe(([categories, courses]) => {
this.categories = categories;
this.courses = courses;
});
}
getCoursesByCategory(key)
{
return this.courses.filter(course => course.category==key);
}
ngOnDestroy() : void
{
this.sub.unsubscribe();
}
}
【问题讨论】:
标签: angular firebase angular-material ngfor angular9