【发布时间】:2018-10-04 23:23:19
【问题描述】:
我试图在触发 promise 时返回一个 observable。 我正在使用 ng-bootstrap 打开一个模式,我想通过 observable 处理 promise 返回。
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();
})
}
}
这是我调用 observable 的标头组件,也是我订阅它的位置
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>' 不可分配给类型 'Observable<any>'。
我已经尝试了很长时间没有任何实际进展,希望得到任何帮助或指导
【问题讨论】:
标签: angular promise observable