2016-07-04 5 views
1

angular2 rc4へのアップグレード後にangualr 2 httpサービスで何か変更がありましたか?angular2 rc4 httpリクエストがキャッチされていない(約束で)例外を投げる

私は角のHTTPクライアント上のドキュメントを通過し、一日中スタックオーバーフローを精査しましたが、問題を把握できませんでした。

は、私のコード実装の断片で、私が得るエラーは誰でも私が間違っていることを私に告げることができます。

これは私のコード

import { Restaurant } from '../index' 
    import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
    import { Injectable } from '@angular/core'; 

    import 'rxjs/Rx'; 
    import { Observable } from 'rxjs/Observable'; 

@Injectable() 
export class RestaurantService { 
    constructor(private _http: Http){} 

    addRestaurant(restaurant: Restaurant): Observable<Restaurant> { 
     let body = JSON.stringify({restaurant}); 
     let headers = new Headers({ 'Content-Type':'application/json'}); 
     let options = new RequestOptions({ headers: headers}); 
     console.log(body); 
     return this._http.post('http://localhost:3000/restaurant', body, options) 
      .map(this.extractData) 
      .catch(this.errorHandler) 
    } 


    private extractData(res: Response) { 
     let body = res.json(); 
     return body; 
    } 

    private errorHandler(error:any) { 
     return Observable.throw(error.json()); 
    } 
    } 

であり、サービスが

import { Component, OnInit, OnDestroy } from '@angular/core'; 
import { REACTIVE_FORM_DIRECTIVES, FormArray, FORM_DIRECTIVES, FormControl, FormGroup } from '@angular/forms'; 
import { Restaurant } from './index'; 
import { RestaurantService } from '../../index'; 

@Component({ 
    moduleId: module.id, 
    selector: 'sd-restaurant-form', 
    templateUrl: 'restaurant-form.component.html', 
    styleUrls: ['restaurant-form.component.html'], 
    directives: [REACTIVE_FORM_DIRECTIVES] 
}) 
export class RestaurantFormComponent implements OnInit, OnDestroy { 
    formActive: boolean = true; 


    restaurantForm = new FormGroup({ 
     ......... 
     ......... 

    }); 

    constructor(public restaurantService: RestaurantService) { } 

    onSubmit() { 
     let value = this.restaurantForm.value; 

     ............ 
     ............ 
     ............ 

     this.restaurantService.addRestaurant(this.restaurant) 
     .subscribe(
      res =>{ this.result = res, 
        console.log(this.result)}, 
      error=> {this.error = error. 
        console.log(this.error)} 
     ) 
    } 


    ngOnInit() { 
     for (let i=0; i<24; i++) { 
      if(i === 0) { 
       this.timesHour.push(0 +''+i); 
      } 
      else if ((Math.log10(i)+1) < 2) { 
       this.timesHour.push(0 +''+i); 
      } else { 
       this.timesHour.push(String(i)); 
      } 
     } 
     for (let i=0; i<60; i++) { 
      if(i === 0) { 
       this.timesMin.push(0 +''+i); 
      } 
      else if ((Math.log10(i)+1) < 2) { 
       this.timesMin.push(0 +''+i); 
      } else { 
       this.timesMin.push(String(i)); 
      } 
     } 
    } 

    ngOnDestroy() {} 

} 

下の私のコードで実装され、これは私が

EXCEPTION: Error: Uncaught (in promise): Can't resolve all parameters for RestaurantFormComponent: (?). 
EXCEPTION: Error: Uncaught (in promise): Can't resolve all parameters for RestaurantFormComponent: (?). 
STACKTRACE: 
Error: Uncaught (in promise): Can't resolve all parameters for RestaurantFormComponent: (?). 
    at resolvePromise (zone.js?1467669664341:538) 
    at zone.js?1467669664341:515 
    at ZoneDelegate.invoke (zone.js?1467669664341:323) 
    at Object.onInvoke (core.umd.js:9100) 
    at ZoneDelegate.invoke (zone.js?1467669664341:322) 
    at Zone.run (zone.js?1467669664341:216) 
    at zone.js?1467669664341:571 
    at ZoneDelegate.invokeTask (zone.js?1467669664341:356) 
    at Object.onInvokeTask (core.umd.js:9091) 
    at ZoneDelegate.invokeTask (zone.js?1467669664341:355) 
Unhandled Promise rejection: Can't resolve all parameters for RestaurantFormComponent: (?). ; Zone: angular ; Task: Promise.then ; Value: BaseException$1 {message: "Can't resolve all parameters for RestaurantFormComponent: (?).", stack: "Error: Can't resolve all parameters for Restaurant…ngular/compiler/bundles/compiler.umd.js:14640:81)"} 
Error: Uncaught (in promise): Can't resolve all parameters for RestaurantFormComponent: (?).(…) 
+0

あなたの 'RestaurantFormComponent'のコードを投稿できますか?このエラーは、そのコンポーネントのコンストラクタの最初のパラメータが注入可能でないことから発生しています。 –

+0

@ian 2番目のコードブロックは、RestaurantFormComponentにRestaurantServinceを実装したものです。サービスには '@Injectable'デコレータがあります。だからそれはうまくいくはずです。私はそれを明確にするために編集します –

+0

あなたはあなたの 'RestaurantService'をあなたがアプリケーションをブートストラップする時に含めますか? –

答えて

1

がでも、私は同じだった取得エラーです角度2 rc4の問題、Injectをインポートして使用するとcan't resolve all parametersの問題が解決されました。ここに私のコードサンプルがあります:

import { Injectable,Inject } from '@angular/core'; 
... 


@Injectable() 
export class RestaurantService { 
    constructor(@Inject(Http) private _http: Http) { 
... 
} 
関連する問題