Я пытаюсь вернуть наблюдаемое, когда обещание срабатывает.я использую ng-bootstrap, чтобы открыть модал, и я хочу обработать обещание возврата через наблюдаемый.
import { Injectable } from '@angular/core';
//modal/popups
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
// observable
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AdminModalService {
constructor(public ngbModal:NgbModal) {
}
open(component:any):Observable<any>{
const modalRef = this.ngbModal.open(component); //this will return a promise
modalRef.result.then((result) => {
console.log('result', result);
this.myObservable(result);
}, (reason) => {
//handle modal dismiss
console.log('reason', reason);
this.myObservable(result);
});
}
myObservable(data){
return new Observable((observer) => {
observer.next(data);
observer.complete();
})
}
}
это компонент заголовка, из которого я вызываю наблюдаемое, а также где я подписываюсь на него
import { Component, OnInit } from '@angular/core';
// components
import { ModalComponent from'../../../../shared/components/modal/modal.component';
// services
import { AdminModalService } from '../../../../shared/services/modal-service/modal-service.service';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
constructor(public adminModalService: AdminModalService) {};
ngOnInit() {
}
openModal(){
this.adminModalService.open(ModalComponent).subscribe(
(res: any[]) => {
console.log('res', res);
}
);
}
}
это ошибка, которую я получаю: ошибка TS2322: Тип 'Promise<void>'
isневозможно присвоить типу 'Observable<any>'
.
Я пытался выполнить это в течение длительного времени без какого-либо реального прогресса, был бы признателен за любую помощь или руководство