Есть сервис, который отправляет данные в расширение хрома и получает данные, но при попытке подписаться на 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);
}