@alexbog90

Как передать данные в компонент с помощью subject?

Есть сервис, который делает сетевой запрос:

@Injectable({
  providedIn: 'root'
})

export class HttpService {

  filterItems: FilterItem[] = [];
  query = 'drinks';
  public subject$: Subject<any> = new Subject();

  constructor(private http: HttpClient) {
    this.passAnArray(this.getFilterItems());
  }

getFilterItems() {
    return this.http.get('url')
      .pipe(map(response => response[this.query]))
      .subscribe(el => console.log(el));
      // .forEach(el => el.checked = true)
  }

passAnArray(arr): void {
    this.subject$.next(arr);
  }

  getAnArray(): Observable<any> {
    return this.subject$.asObservable();
  }


и есть компонент, который должен принять этот запрос и записать в локальную переменную:

ngOnInit() {
this.httpService.getAnArray().subscribe(el => {
      this.filterItems = el;
      console.log(this.filterItems);
    });
    console.log(this.filterItems);
}



Что-то делаю не так, в консоли undefined
В сервисе консоль показывает массив, приходящий по запросу
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
mmmaaak
@mmmaaak
Сделай passAnArray(el) внутри subscribe получения данных, там где в консоль выводишь. А в конструкторе просто вызывай this.getFilterItems()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы