2016-07-11 82 views
5

我试图按照this tutorial,但我得到错误。类型'Observable <{}>'不可分配为类型'Observable <boolean> |布尔'

  1. pathMatch:'full'。我尝试将“@ angular/router”更改为“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" 
}, 
  • 类型 '可观察< {}>' 不可分配,其中它指向为类型 '可观察', line '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; 
    } 
    
  • 任何人都可以引导我解决这些错误?谢谢。

    回答

    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

    编译器是抱怨,因为返回值oObservable<{}>类型。这很可能是因为您正在构建p中的Observable,此解析为Promise<{}>。请仔细检查dialogService.confirm()并确保其返回值为Promise<boolean>

    如果这不起作用,你可以尝试像@rinukkusu建议的那样明确地转换。

    +0

    非常感谢你!你知道我怎么能修复“pathMatch”错误,来自互联网的建议似乎没有工作。 – kenkulan

    +1

    @kenkulan接收的确切错误是什么,从哪里以及在什么情况下? – linguamachina

    相关问题