2016-09-23 13 views
4

私は、Typescriptで角度2を使用して簡単なHTTP GETリクエストを作成しようとしています。 null urlで404エラーが発生しています。私のコンポーネントファイルと私が受け取っているエラーは以下の通りです。角度2 HTTP GETが返されるURLがNULL

import { Component, OnInit } from '@angular/core'; 
import { Router } from '@angular/router'; 
import { BreadcrumbService } from './breadcrumbService'; 
import { Http, Response } from '@angular/http'; 

@Component({ 
    moduleId: module.id, 
    providers: [ BreadcrumbService], 
    templateUrl: 'html/appList.html', 
    styleUrls: ['css/list.css'] 

}) 
export class HealthComponent { 
    constructor(private http: Http) { 
     this.http.get('http://jsonplaceholder.typicode.com/posts/1') 
     .toPromise() 
     .then((res: Response) => { 
     console.log('RES: ', res); 
     }) 
    .catch((err: Error) => { 
     console.log('ERR!!: ', err); 
    }); 
    } 
} 

エラーメッセージ:

Response {_body: Object, status: 404, ok: false, statusText: "Not Found",  headers: Headers…} 
_body:Object 
headers:Headers 
ok:false 
status:404 
statusText:"Not Found" 
type:2 
url:null 
__proto__:Body 
+0

あなたは、角2のどのバージョンを使用してください:この問題を解決する方法はapp.module設定でpassThruUnknownUrl: trueを設定することですか? – galvan

+0

@galvanは2.0.0ベータ版.17に見えますが、私はimport @ angular/httpを使用しています –

+0

私は同じ問題を抱えています。 – Yuvals

答えて

1

あなたが見ることができるように、それはサーバーにリクエストを分析し、404エラーです。 404エラーは、あなたが要求したものが見つかりませんでした。

どのようにリクエストするかについては、toPromiseの代わりに.mapを使用してください。

代わりにngOnInitを使用して、コンストラクタでHTTPリクエストを作成しないようにしてください。

4

これはおそらくInMemoryWebApiModule.forRoot関連の問題です。これは、メモリ内のAPIを読み込み、未定義のURLに到達しようとしたときに発生します。

InMemoryWebApiModule.forRoot(InMemoryDataService, {passThruUnknownUrl: true}) ..

+0

ありがとう、私は同じ問題を抱えていましたが、これは確かに実用的な解決策です。私はなぜInMemoryモジュールがこのような動作を引き起こしたのかをさらに調べなければならないでしょう。 http://stackoverflow.com/questions/41752254/angular2-http-geturl-is-returning-404-on-a-valid-url-that-c​​an-be-retrieved-usi/41752435?noredirect=1#comment70698057_41752435 – SuperTetelman

関連する問題