@Ghoulll

Почему вылетает error 'Cannot read property 'subscribe' of undefined'?

Есть сервис, который отправляет данные в расширение хрома и получает данные, но при попытке подписаться на Observable вылетает ERROR, код сервиса:
getCerts(): Observable<any> {
    const editorExtensionId = 'asdfghjkl';
    const message = {
      cmd: 'SomeMSG',
      args: 'SomeARR',
    };
    let result = null;
    chrome.runtime.sendMessage(editorExtensionId, message, res=> {
      if (res=== 0) {
        alert('...');
        return 0;
      }
      if (res.error !== 0) {
        if (res.error === -1) {
          alert('...');
        }
        return 0;
      }

      if (res.certsCount === null || res.certsCount === 0) {
        alert('...');
        return 0;
      }
      result = res;
      return result;
    });
      return result
  }


Код компоненты:
...
  <app-auth (getCertificates)="getCertificates()" [certs]="cert$ | async"></app-auth>
...
  cert$: Observable<any>;
...
  getCertificates(): void {
    this.authService.getCerts().subscribe(p => this.cert$ = p);
  }
...


И код неумной обертки:
...
  <button id='connect-button' (click)="onGetCertificates($event)">Получить что-то</button>
  <br>
  <div id="response" *ngFor="let cert of certs">
    {{cert | json}}
  </div>
....
  @Input() certs: Observable<any>;
  @Output() getCertificates: EventEmitter<any> = new EventEmitter<any>();
  onGetCertificates($event): any {
      this.getCertificates.emit($event);
    }
  • Вопрос задан
  • 429 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
getCerts(): Observable<any> {
  // ...
  return new Observable(observer => {
    chrome.runtime.sendMessage(editorExtensionId, message, res=> {
      // ...
       observer.next(result);
       observer.complete();
    })
}
})


Домашняя работа - сократить код используя https://rxjs.dev/api/index/function/bindCallback
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы