Угловая отдача, наблюдаемая из eventListener - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть метод в службе приложений angular, который должен возвращать данные img blob

getPlanImage$(): Observable<any> {
    return this.http.get$(`${this.serviceUrl}/Photo`, 'blob' )
    .pipe(map((response:any) => {
      let reader = new FileReader();
      reader.addEventListener("load", () => {
        return reader.result;
      }, false);
      if (response) {
        reader.readAsDataURL(response);
     }
    }))
  }

, и я подписываюсь на него следующим образом:

this.assetService.getPlanImage$().subscribe(data => {
      this.imageToShow = data;
    })

Я вижу успешный вызов изображенияслужба в сети Chrome, но этот метод в этой строке this.imageToShow = data; данные не определены

1 Ответ

0 голосов
/ 22 февраля 2019

Вы должны сделать что-то вроде ниже.

import { fromEvent } from 'rxjs';
import { flatMap, map } from 'rxjs/operators';
...


getPlanImage$(): Observable<any> {
    return this.http.get$(`${this.serviceUrl}/Photo`, 'blob').pipe(
        flatMap((response: any) => {
            let reader = new FileReader();

            if (response) {
                reader.readAsDataURL(response);
            }

            return fromEvent(reader, 'load').pipe(map(() => reader.result));

        })
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...