首页 文章

类型'Observable<{}>'不能分配给'Observable<boolean> | boolean '类型

提问于
浏览
5

我试图关注this tutorial,但我收到了错误 .

  • pathMatch:'full' . 我尝试改变“@ angular / router " to " 3.0.0-beta.2”,仍然是同样的问题 .

我的依赖:

"dependencies": {
    "@angular/common": "2.0.0-rc.3",
    "@angular/compiler": "2.0.0-rc.3",
    "@angular/core": "2.0.0-rc.3",
    "@angular/http": "2.0.0-rc.3",
    "@angular/platform-browser": "2.0.0-rc.3",
    "@angular/platform-browser-dynamic": "2.0.0-rc.3",
    "@angular/platform-server": "2.0.0-rc.3",
    "@angular/router": "3.0.0-beta.2",
    "@angular/router-deprecated": "2.0.0-rc.2",
    "nativescript-angular": "0.2.0",
    "tns-core-modules": "^2.1.0"
},
  • 输入'Observable <{}> ' is not assignable to type ' Observable',它指向'return o'行;
canDeactivate(): Observable<boolean> | boolean {

if (!this.crisis || this.crisis.name === this.editName) {

return true;
}
let p = this.dialogService.confirm('Discard changes?');
let o = Observable.fromPromise(p);
return o;
}

任何人都可以指导我修复这些错误吗?谢谢 .

2 回答

  • 4

    你可以试试施法:

    canDeactivate(): Observable<boolean> | boolean {
    
        if (!this.crisis || this.crisis.name === this.editName) {
    
            return true;
        }
        let p = this.dialogService.confirm('Discard changes?');
        let o = <Observable<boolean>>Observable.fromPromise(p);
        return o;
    }
    
  • 3

    编译器抱怨,因为返回值 o 的类型为 Observable<{}> . 这很可能是因为您正在从 p 构造一个 Observable ,它解析为 Promise<{}> 类型 . 仔细检查 dialogService.confirm() 并确保其返回值的类型为 Promise<boolean> .

    如果这不起作用,你可以尝试明确地像@rinukkusu建议一样 .

相关问题