我有一个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");
}
答案 0 :(得分:5)
您需要订阅get方法(冷可观察)才能触发调用。