фильтр, наблюдаемый в угловом

#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