2017-12-13 8 views
1

私はAngle 5をHTTPで処理しています。アプリケーションにサービスを提供しながら、このエラーを取得Angular 5 HTTP get response errorプロパティ 'body'が型 'Object'に存在しません

enter image description here

..

import { Component, OnInit } from '@angular/core'; 
import { Router, ActivatedRoute, ParamMap } from '@angular/router'; 
import { HttpClient } from '@angular/common/http'; 
import 'rxjs/add/operator/switchMap'; 

@Component({ 
selector: 'app-post-detail', 
templateUrl: './post-detail.component.html', 
styleUrls: ['./post-detail.component.css'] 
}) 
export class PostDetailComponent implements OnInit { 
body: string; 
recent: {}; 
constructor(
    private route: ActivatedRoute, 
    private router: Router, 
    private http: HttpClient, 
) { } 

ngOnInit() { 
    let id = this.route.snapshot.paramMap.get('id'); 
    let userId = this.route.snapshot.paramMap.get('userid'); 
    this.getUserPosts(userId); 
    this.http.get('https://jsonplaceholder.typicode.com/posts/'+id) 
    .subscribe((data)=>{ 
    this.body = data.body; 
    }); 
} 
} 

私はこのエラーを取得していますし、私は構文に基づいて、クラス内の文字列としてタイプを割り当てるのはなぜ知りません。以下のようにAPIの

レスポンス、

enter image description here

+0

あなたが本当にネットワーク]タブで呼び出さなっているサービスを見ましたか?私はそれが発砲していないと思う、よく注入サービスにサービスコールを移動し、ここにコンポーネントで注入しようとする。 – devo

+0

また 'body:string'が' body:any'に変更されました。 – devo

答えて

1
(data)=>{ 
    this.body = data.body; 
} 

dataはJSONではありません。 data.json()を実行する必要があります。それとも、サブスクライブする前にmapを実行することができます:

this.http.get('https://jsonplaceholder.typicode.com/posts/'+id) 
    .map(res => res.json()) 
    .subscribe((data)=>{ 
     this.body = data.body; 
}); 

mapを使用するためには、あなたはそれをインポートする必要があります。

import 'rxjs/add/operator/map' 

は、ここではより多くの例を参照してください:https://angular.io/api/http/Http

をEDIT

応答が入力されました - あなたのためのインターフェイスを作成する必要があります応答:

interface SomeResponse { 
    Body: SomeType; 
} 

そして、このような要求を行います。

this.http.get<SomeResponse>'https://jsonplaceholder.typicode.com/posts/'+id) 
    .subscribe((data)=>{ 
    this.body = data.body; 
    }); 

ここでも、より多くの例ここ:https://codingthesmartway.com/angular-4-3-httpclient-accessing-rest-web-services-with-angular/

+0

src/app/frondend/posts/post-detail/post-detail.component.ts(27,21)のエラー:TS2339:プロパティ 'json'がタイプ 'Object'に存在しません。 – Jishad

+0

'import 'rxjs/Rx'; ' – devo

+0

上記と同じエラーです。 – Jishad

関連する問題