2017-09-28 9 views
1

私は他のコンポーネントでアクセスできるようにオブジェクトを格納するか、Web APIからデータを要求してマップに返します。角2+ httpリクエストからの変数またはマップを返します

ngOnInit() { 
    this.objectService.get().subscribe((data: any) => { 
     this.title.setTitle(data.name); 
    }); 
} 

ページタイトルを設定するには、サービスを利用しobjectService

get(): any { 
    if (this.object == undefined || this.object == null) { 
     return this.http.get(this.baseUrl + "/companies/get) 
      .map((data: any) => { 
       this.object = data; 
       return this.object; 
      }); 
    } else { 
     return this.object; 
    } 
} 

ためだからこれは私が最初にページをロードするときに動作しますが、ページへの移動時に取得再ロードせずに次のエラーが発生します...subscribe is not a function。私はHTTP要求ではなくオブジェクトを返すので意味があります。

私はHTTP要求ではなくオブジェクトだけを返そうとしました。

例これが今のページの更新は私にthis.objectServiceを言って、エラーを与える問題を反転させ

ngOnInit() { 
    this.title.setTitle(this.objectService.get().name); 
} 

ページタイトルを設定するには、サービスを利用しobjectService

get(): any { 
    if (this.object == undefined || this.object == null) { 
     return this.http.get(this.baseUrl + "/companies/get) 
      .map((data: any) => { 
       this.object = data; 
      }); 
    } 
    return this.object; 
} 

ために得ます.get()。nameは未定義です。ページを更新せずにコンポーネントに移動すると、正常に動作します。

これを機能させるための助けがあれば幸いです。前もって感謝します!

+1

、 'Observable.of( 'this.object')' –

答えて

1

実際には、観察可能なオブジェクトと通常のオブジェクトを混合しています。

私が最初aproachにスティックを言うが、単にオブジェクトを戻しながら、それはあなたのonNgInit

だからあなたのサービス意志

get(): Observable<any> { 
    if (this.object == undefined || this.object == null) { 
     return this.http.get(this.baseUrl + "/companies/get) 
      .map((data: any) => { 
       this.object = data; 
       return this.object; 
      }); 
    } else { 
     return Observable.of(this.object); 
    } 
} 

そして、あなたの消費で動作するように、観測可能に変換しますどちらも正常であり、両方の場合に有効です。

ngOnInit() { 
    this.objectService.get().subscribe(
     (data: any) => { // this for response data 
     this.title.setTitle(data.name); 
     }, 
     (error: any) => { // this for error 
     console.log('error: %o', error); 
     }, 
    ); 
} 
+0

作品で観測可能に通常のオブジェクトを変換ありがとう。 –

+0

httpリクエストから404が返されます。ngOnInit関数でこれをどのように検出しますか? –

+0

Nvmはそれを理解しました。サービスの 'map'の後に' catch'を設定しました。エラーを返して、サービスを利用するときに確認できます。 –

関連する問題