Чего я пытаюсь добиться, так это показать некоторые новости из моей базы данных в приложении Angular, и моя проблема в том, что я не могу запросить базу данных. Я более чем уверен, что это просто небольшая ошибка, но ради этого я не могу понять это.
Редактировать 1. После реализации кода, предоставленного @David East, я получаю сообщение об ошибке только в строке «.equalTo(category))», говорящее о том, что ожидается точка с запятой или ,}). На данный момент я застрял, и любая помощь будет здорово.
Курс.компонент
export class CoursesListComponent implements OnInit {
coursesObservable;
categorySubject = new Subject<any>();
constructor(private db: AngularFireDatabase, public auth: AuthService) { }
ngOnInit() {
this.coursesObservable = this.categorySubject.map(category => {
return this.db.list<any[]>('courses', ref => {
return ref.orderByChild('category')
.equalTo(category))
.valueChanges();
});
}
pickCategory (category: string) {
this.categorySubject.next(category);
}
}
HTML
<ul>
<div class="scrollmenu">
<select [(ngModel)]="category" (change)="pickCategory(category)">
<option *ngFor="let category of coursesObservable | async" value="{{category.title}}">{{ category.title }}</option>
</select>
</div>
<div *ngFor="let course of coursesObservable | async">
<a href="{{course.url}}" target="_blank" >
<h3>{{course.title}}</h3>
<p>{{course.description}}</p>
</a>
</div>
</ul>
И файл JSON для firebase
{ "courses":
{
"Angular 1" : {
"description" : "Lorem Ipsum",
"title" : "Title 1",
"url" : "https://www.news.ro/"
"category" : "test"
},
"Angular 2" : {
"description" : "Itent, sometimes on purpose (injected humour and the like).",
"title" : "Title 2",
"url" : "https://www.news.ro/"
"category" : "test"
}
}
}