簡體   English   中英

角度 4 函數返回布爾值 = 未定義

[英]angular 4 function return boolean = undefined

我似乎無法弄清楚這一點。 我有一個 DataService(又名 ds)和一個組件。 組件調用函數doesUserExist():

console.log("boolean="+this.ds.doesUserExist());

這總是以未定義的形式出現。 這是 DataService 中的函數:

 doesUserExist(){
    var bool:boolean;
    var myvars = this.af.list('/accounts/'+this.uid) as FirebaseListObservable<Listing[]>;

    myvars.subscribe(data=>{
          console.log("length="+data.length)
          if (data.length===0){
            bool = false;        
          }       
        })
        return bool;

      }

我也嘗試將var bool:boolean作為公共變量,但無論發生什么,這都是未定義的。

我還在上面的 if 語句中設置了var bool:boolean=true和 bool WILL 等於 false(我已經通過 console.log 檢查過),而不是返回為false ,根據上面的指定,它仍然是true

那么我做錯了什么? 我四處搜索並嘗試過:

Boolean([return bool])但代碼不喜歡那樣

我也嘗試將returns放在 if 語句中。 那行不通。

謝謝!

您沒有定義 bool,並且它沒有通過您的訂閱傳遞(因為它是異步的,所以答案可能會在稍后出現),因此當您返回 bool 時,它沒有任何價值。

由於您的函數基於響應的長度,因此您可以刪除該布爾值。

 doesUserExist(): Observable<boolean> {
  var myvars = this.af.list('/accounts/'+this.uid) as FirebaseListObservable<Listing[]>;

  return myvars.subscribe(data=>{
      console.log("length="+data.length)
      return data.length === 0; // true if that's the case, or false
    })
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM