#angular #typescript #redux-observable
Вопрос:
Можете ли вы мне помочь? Я получаю пустой массив после того, как я попытаюсь отфильтровать наблюдаемый
Это вывод, который я получаю, когда я регистрируюсь в консоли
Array []
длина: 0; Массив []
Это мой общий сервис
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { Supplier } from '../components/selectsupplier/selectsupplierObj';
@Injectable({
providedIn: 'root'
})
export class SharedService {
private availablesuppliers = new BehaviorSubject<Supplier[]>(null);
constructor() { }
loadSuppliers(suppliers: Supplier[]) {
this.availablesuppliers.next(suppliers);
}
getSuppliers(): Observable<Supplier[]> {
return this.availablesuppliers.asObservable();
}
}
Здесь я пытаюсь отфильтровать по идентификатору поставщика, который я удаляю из локального хранилища
ngOnInit() {
// call function on page load
this.report();
let supplierID = parseInt(this.route.snapshot.paramMap.get('supplier'));
this.SupplierID = supplierID;
localStorage.setItem('supplierid', this.SupplierID);
this.Auth.authStatus.subscribe(value => this.loggedIn = value);
this.shared.getSuppliers()
.pipe(
map(suppliers =>
// console.log("suppliers", suppliers)
suppliers.filter(supplier => supplier.SupplierID === this.SupplierID),
)
)
.subscribe(response => {
console.log("From shared services", response);
console.log(this.SupplierID);
});
}
Комментарии:
1. Если бы вы хотели прокомментировать
suppliers.filter(supplier => supplier.SupplierID === this.SupplierID)
, получили ли вы какие-либо материалы?2. привет тейлорсвифтфан, да, я получу все предметы
3. Отлично. Так что, по крайней мере, мы знаем, что до этой черты все работает. Вы уверены, что в коллекции есть соответствующий идентификатор поставщика?
4. да, похоже, что строка фильтрации ошибочна, но что касается идентификатора поставщика, он соответствует коллекции, на предыдущей странице перечислены элементы, и когда пользователь нажимает на какой-либо элемент, l отправьте идентификатор поставщика элемента в опубликованный код, а затем извлеките идентификатор поставщика элемента из URL-адреса. с помощью которого l затем попытается отфильтровать в массиве obs
5. Попробуйте сравнить только с double ==, aka
supplier.SupplierID == this.SupplierID
. Поставщик-это номер? Значение, которое вы получаете из URL-адреса, является строкой, поэтому вы можете сравнивать 3 ===»3″//false