2016-11-10 46 views
0

的「訂閱」我收到錯誤角不能讀取屬性空

無法讀取屬性空的「訂閱」。

這是錯誤的發生,這是由它的類的構造函數調用:

loadItems() { 
    this.itemService.subscribeItems().subscribe(x => { 
     this.items = x; 
     console.log(x); 
    }); 
} 

它調用該服務的方法,這是哪裏的問題,我認爲。這可能是與return null

subscribeItems(): Observable<Item[]> { 
    this.session.uid.subscribe(x => { 
      return this.af.database.list('users/' + x + '/Items') 
      .map(Item.fromJsonList); 
    }); 
    return null; 
} 

會話服務做持有,當用戶登錄時更新UID: 這部分工作正常。

_uid = new BehaviorSubject<string>(''); 
uid = this._uid.asObservable(); 
+0

嘗試刪除'返回NULL;' –

+0

我試過。我試圖創建一個類型的局部變量,並在最後返回。我只是分配給那個var而不是內部返回。但仍然沒有好處 – Jason

+0

如果它幫助任何人,當我忘記在FormGroup聲明中的Validator.compose([...])中包裝驗證器時,我在文本輸入中出現'關鍵'錯誤' –

回答

1

試試這個:

subscribeItems(): Observable<Item[]> { 
    return this.session.uid.subscribe(x => { 
      return this.af.database.list('users/' + x + '/Items') 
      .map(Item.fromJsonList => Item.fromJsonList.json()); 
    }); 
    return null; 
} 
+0

類型訂閱無法分配到類型Observable Jason

+0

你回來的內容與條件不匹配Observable 請嘗試刪除此內容,查看控制檯日誌顯示的內容 –

+0

this.session.uid.subscribe返回一個字符串。這用於獲取用於查詢數據庫的uid。當用戶登錄此uid更改並將觸發內部使用x變量再次運行時爲該用戶返回正確的項目。 – Jason