Angular 2 - 来自组件的简单HTTP GET不工作

时间:2016-07-12 11:29:45

标签: angularjs angular asp.net-web-api2

我有一个Angular 2应用程序,它有一个简单的组件(见下文)。 它对Web Api端点进行简单的GET调用。 我可以使用邮递员调用终点,但是当这个组件尝试失败时。永远不会进行调用,也不会输出错误。 我做错了什么?我之前一直遵循这种模式。

import { Component, Input }  from '@angular/core';
import { ROUTER_DIRECTIVES, Router } from '@angular/router';
import { Http,Response, Headers, RequestOptions  } from '@angular/http';
import { DomSanitizationService } from '@angular/platform-browser';
import { Observable } from 'rxjs/Observable';
import { ITile } from '../interfaces/tile';

@Component({
    selector: 'tile',
    template: require('../tile/tile.component.html'),
    styles: [require('../tile/tile.component.css').toString()],

    directives: [ROUTER_DIRECTIVES]
})

export class TileComponent {
    @Input() tile: ITile;

    constructor(private _http: Http) { }

    onSelect(id: string) {
        this.getProfileImage(id);
    }

    getProfileImage(id: string): Observable<string> {

     let url = 'http://localhost:2116/api/profileimage/5/';
     let headers = new Headers({ 'Accept': 'application/json' });
     let options = new RequestOptions({ headers: headers });

    return this._http.get(url, options)
            .map((response: Response) => <string>response.json())
            .catch(this.handleError);

    }

      private handleError(error: Response) {
        console.log(error);
        return Observable.throw(error.json().error || 'Server error');
    }

}

终点看起来像这样......

[AllowAnonymous]
[Route("api/profileimage/{userId}")]
public HttpResponseMessage Get(string userId)
{ 
    return Request.CreateResponse(HttpStatusCode.OK, "success");
}

1 个答案:

答案 0 :(得分:5)

您需要订阅get方法(冷可观察)才能触发调用。