2017-06-05 11 views
1

私は角度などが新しく、私は解決策で遊んでいます。しかし、ローカルのブール値を渡したいとき、私は定義されていませんか?私はなぜそれを理解しようとしている。これは私のガードです、私のサービスは単にAPIを呼び出し、それは通過しています。私はエラーを表示するために、解決が添付されているコンポーネントにブール値を渡したいと思います。角度2解決 - ローカル変数スコープ

resolve(): boolean { 
    let passed: boolean; 
    let uid: string = window['appdata'].uid; 
    let tbt: string = window['appdata'].tbt 
    let lang: string = window['appdata'].apiUserLanguage; 

    if(uid != null || undefined && tbt != null && undefined){ 
     console.log('Uid is: ' + uid + ' tbt is: ' + tbt); 
     this.validateEmailService.emailCheck(uid, tbt, lang).subscribe( 
      data => { 
       passed = true; 
      }, 
      err => { 
       passed = false; 
      } 
     ); 
    } 
    console.log('Passed is: ' + passed); 
    return passed; 
} 

}

+0

何かがあなたの状態から指摘する:未定義でfalsyです。 あなたの状態で:uid!= null || undefined && tbt!= null && undefined この部分は評価されません。(未定義&& tbt!= null && undefined) 問題の一部である必要があります。 – Juan

+0

渡す値を非同期に設定していますが、値を同期して記録しています。つまり、 'this.validateEmailService.emailCheck'が完了する前に' console.log( '合格:' +合格);が発生します。 – Baruch

+0

ありがとうございました。私の特定のユースケースでは、観測可能ではなく約束を使用してから.then()を使用する方が良いかどうか疑問に思う。 –

答えて

2

ブールが返されますが、あなたは購読がasynchrounous方法であるため、サービスによって返され、観察をサブスクライブした後、それを表示することができます。この&のようにサブスクライブにそれをログに記録しようと、それは価値があったことになるのです:)

resolve(): boolean { 
let passed: boolean; 
let uid: string = window['appdata'].uid; 
let tbt: string = window['appdata'].tbt 
let lang: string = window['appdata'].apiUserLanguage; 

if(uid != null || undefined && tbt != null && undefined){ 
    console.log('Uid is: ' + uid + ' tbt is: ' + tbt); 
    this.validateEmailService.emailCheck(uid, tbt, lang).subscribe( 
     data => { 
      passed = true; 
      console.log('Passed is: ' + passed);// Passed is: true 
     }, 
     err => { 
      passed = false; 
      console.log('Passed is: ' + passed);// Passed is: false 
     } 
    ); 
} 

return passed; 

}

関連する問題