У меня есть служба, в которой я написал метод для извлечения данных из friestore.
метод должен возвращать наблюдаемое. Затем данные преобразуются и сохраняются в другой переменной. Я хочу создать наблюдаемую из обновленной переменной. Как я могу go об этом.
Я пытался создать наблюдателя, используя Subjects, ReplaySubjects и observables, но я предполагаю, что что-то упустил. Но я получаю следующие ошибки:
core. js: 5847 Ошибка: Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'asObservable' из неопределенного
и
core. js: 5847 ОШИБКА TypeError: Невозможно прочитать свойство 'next' из undefined следующий код.
import { BehaviorSubject, Observable, of, Subscriber, ReplaySubject, Subject} from 'rxjs';
export class ProductsService {
public List : Product[] = [];
public productListObservable : Subject<Product[]>;
private products(): Observable<Product[]> {
//returns an observable of type Product[]
this.firestoreService.getProductsList().subscribe((doc) =>{
//Fetch data from firestore and
//create the new list with updated id's
this.List = doc.docs.map(prodItem =>{
let x = prodItem.data()
let test = {};
test['id']=prodItem.id;
test['name'] = x['ProductName'];
test['category'] = x['ProductCategory'];
test['tags']= x['ProductTags'];
test['specs'] = x['ProductSpecs'];
test['inclusions'] = x['ProductInclusion'];
test['shortDetails'] = x['ProductShortDetails'];
test['description'] = x['ProductDescription'];
test['pictures'] = x['ProductImages'];
return test;
})
this.productListObservable.next(this.List);
})
return this.productListObservable.asObservable();
}
public getProducts(): Observable<Product[]> {
//var test = this.products();
//test.subscribe(x =>{
// console.log(x);
//})
return this.products();
}
In Component. html
ngOnInit() {
this.productsService.getProducts().subscribe(product => this.products = product);
}