web-dev-qa-db-ja.com

Angular2-http.post(...)。mapは関数ではありません

すべてのgithubの問題とStackOverflowの投稿を調べましたが、動作させることができません

https://github.com/angular/angular/issues/5632

Angular 2 HTTP GET with TypeScript error http.get(...)。map is not function in [null]

  • 私は[email protected]を使用しています
  • コンソールでコンソール/リソースを確認すると、Rxjs([email protected])が正常にインポートされます。

さまざまなインポートを試しました:

_import 'rxjs/add/operator/map';_

_import 'rxjs/rx';_

しかし、エラーが発生し続けるhttp.post(...).map is not a function

update-コードコンテキスト

_let body = "email=" + email + "&password=" + password;
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-from-urlencoded');
this.http.post('http://angular.app/api/v1/auth') // angular.app is laravel backend
      .map( (responseData) => {
          return responseData.json();
      })
_
13
Angelo A

Angular2 beta.1にはRxJS 5.0.0-beta.0が必要と思われます。おそらくそれが問題の原因です。

package。jsonファイルでこれを試してみると:

"dependencies": {
    "angular2": "2.0.0-beta.1",
    "systemjs": "0.19.6",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.3",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.1",
    "zone.js": "0.5.10"
},

そして、Angular2にはRxJS 5.0.0-beta.0が必要であるというエラーがあります。

編集

bootstrap関数の2番目のパラメーター内にHTTP_PROVIDERSを追加する必要があります。

お役に立てばと思います、ティエリー

2

私にとってhttp.post(...).map()は期待通りに動作します。インポート 'rxjs/Rx'が必要です

import {Component} from 'angular2/core';
import {Http} from 'angular2/http';
import 'rxjs/Rx';
@Component({
  selector: 'my-app',
  template: `
    <h1>{{title}}</h1>
    <p>Test result {{result | json}}</p>
    `
})
export class App implements OnInit{
 public title = 'my title';
 public result : String;

constructor(private _http : Http) {
  _http.post('http://jsonplaceholder.typicode.com/posts')
    .map(res => res.json())
    .subscribe(
      data => this.result = data,
      err => console.log('ERROR!!!'),
      () => console.log('Got response from API', this.result)
    );
  }
}

プランカーの例を参照してください: http://plnkr.co/edit/vise2zYxZUmr1kW65mNY?p=preview

これがあなたの問題を見つけるのに役立つことを願っています