2017-12-03 12 views
0

あるレイヤーから別のレイヤーに結果を渡す場合、Angular4で観測可能な関数を連鎖する方法を教えてください。Angular4の異なるレイヤーで観測可能な連鎖

第1層目はGetメソッドによるデータサービスです。
2番目のレイヤーは、データサービスgetメソッドを呼び出してそれを取得して結果を取得する異なるサービスです。

私のコンポーネントの2番目のレイヤーサービスを購読したいのですが、2番目のレイヤーサービスを介してデータサービスからコンポーネントに価値を渡すにはどうすればいいですか?

ポイントは、コンポーネントのデータサービスから直接コードを取得したくないということです。

enter image description here

私は、コンポーネントにはGetProfileに加入したいが、どのように私はきちんとした後、ここで値を返す値はDataServiceのにgetone関数からあり、別名の後に加入していますか?

答えて

0

おそらくdo()を使用できます。

public getProfile =() : Observable<any> { 
    this.dataService.setEndPoint('api/account/getprofile'); 
    return this.dataService.GetOne() 
     .map(response => response.json()) 
     .do(response => { 
      ...... 
     }, error => { 
      ...... 
     }); 
} 
+0

[OK]をどのように私は、私はまだ私がどこかわからない、戻り値エラーを返す必要があります取得しています、返しません別のリターンを入れる? .do()で何をすれば関数がうまくいくのですか?リターンレスポンスを返すと、どこで値を返すのかわかりません。 –

0

ハア、私は最初からやっていたはずのことを終わらせました。

public GetProfile =(): Observable<any> => { 
    this.dataService.SetEndpoint('api/account/getprofile'); 
    return this.dataService.GetOne(); 
} 

コンポーネント::これは、私はその後、最後にサブスクライブする第二の層である

getProfile(): void{ 
    this.accountService 
     .GetProfile() 
     .subscribe(data => { 
      this._updateProfileModel = data; 

      this._form.setValue({ 
       firstName: this._updateProfileModel.firstName, 
       lastName: this._updateProfileModel.lastName, 
       phoneNumber: this._updateProfileModel.phoneNumber 
       }); 
     }, (error) => { 
      console.log(error); 
     }); 
} 
関連する問題