私が観測から値を抽出しようとしているが、私のサブスクリプション(コンポーネント)のコードは以下のようにある:「日付」コールバックで観察可能な未定義
this.checkoutService.getDisabledDate().subscribe
(dates=>{this.formattedDate=dates},
(error:any)=>{console.log(error)});
がthis.formattedDateのにconsole.logを印刷します正しい値。ただし、サブスクリプションの外でthis.formattedDateにアクセスしようとすると、定義されません。
サービスコード:
getDisabledDate():Observable<any>{
let headers = new Headers({'Content-Type': 'application/json' });
let options = new RequestOptions({headers:headers});
let userRequest={action_id:0};
let disabledDate={};
return this.http
.post(this.deliveryUrl,userRequest,options)
.map((r:Response)=>r.json())
.catch(this.handleError);
}
Iは、短い形式()を使用しqueryParamを介してデータを渡す同じアクションを実行してきたが、それはこの場合に差を作りません。私はこれで情報を引き出すために必要なことを見落としているようです。
私は両方を見てきました: Angular2 HTTP using observables subscribe showing data undefined と Angular 2 return data from service is not availabe after RxJs subscribeを。
私はどこに彼らの質問に答えられたのですか。私は何が欠けていますか?
このデータにどのようにアクセスしようとしていますか?あなたの見解では?あなたは* ngを1つの答えに示唆されたように使用しましたか? – Alex
利用可能になる前にデータにアクセスしようとしているようです。これは、observableが値を返した後でのみ利用可能です。 Observableが返ってきたと確信していますか?つまり、{{this.formattedDate = dates'}は、アクセスしようとする前に呼び出されていますか?それはあなたの問題で私の最高の推測です。 – VSO
これは、技術的には、非同期関数から値を返す方法の欺瞞です。 –