2017-03-08 9 views
1

ObservablesのビットがAngular2で少し新しいです。私が理解しているところでは、データが変更されたときはいつでも、subscribersに変更が加えられます。実際に私のphpバックエンドからの最初の応答はの最初の実行にあります。角度2オブザーバブルPHPから

しかし、私はデータベースthe observable cant fetch the next changes again. It will only update upon refresh

マイサービス

checkField(_options : T):Observable<any>{ 
    this.options = _options; 
    let x = this.serialize(this.options); 

    let headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'}); 
    let options = new RequestOptions({ headers: headers}); 

    return this.http.post("http://zodiark.co.nf/php/check_id.php" , x , options).map(this.extractData).catch(this.handleError); 
} 

マイコンポーネント

regChecker.checkField(this.checkerOption).subscribe( 
    (data) => { this.testObserver = data; console.log(this.testObserver) 
}) 
で物事を変更または更新する場合

これが可能であれば、私はちょうど明確化が必要です
PS。事前のお礼ありがとうございます。

答えて

3

観測が多くの場所で使用され、多くの観測を理解する方法が、何を理解する必要性を行うは、あるHTTP要求が応答(あるいは失敗した)に完成されることを観察可能に返すということです、それはすることができます実際にバックエンドがデータを「送る」ことを実際に知っているのは、そのように構築されていないだけなので、バックエンドはリクエストにのみ応答します。

このため、HTTPリクエストにobservablesを使用することは、Observablesがキャンセル可能であることを除いて、HTTPリクエストに対してPromisesを使用する場合とほぼ同じです。

Observablesの他の使用例では、利点がより明確になります... DOMイベント観測値、またはangle2反応形式コントロールの値観測値などを持つ多くの例が見つかります。

私は、あなたが何が起こっているのか分からなかったことを理解しています。

+0

ありがとう。私はObservable.intervalを使って放送時間を熱く観測しました。私はあなたが暗示しようとしていることを理解しています。私はAngularFire2のようなものをやることができると思っていました。以前に試してみましたが、データベースを直接変更するとクライアントに反映されます。しかしもう一度ありがとう。 –

+0

ああ、Firebaseは単純なHTTPリクエスト以上のものです;) – Amit

+0

問題デスクトップ版の既存のライブウェブサイトを使用する必要があります。だから、私のIonicアプリは 'php'でデータベースを取得する必要があります。悲しい生活haha –