我使用的是Microsoft.AspNetCore.Spatemplates,现在正在使用angular 4.1.2。当我使用以前版本的使用角度2.4的Spatemplates时,我能够使用角度服务对我的.NET控制器执行http.get,使用相对URL来查看下面的代码。
export class MyService {
private url = 'api/myController';
constructor(private _http: Http) {
}
public getAll = (): Observable<any> => {
return this._http.get(this.url)
.map(data => data.json());
};
现在我正在使用新的Spatemplates,它需要一个绝对的URL。有谁知道这是为什么?
我也知道在我的app.module.client.ts中注意到我看到了一个ORIGIN_URL
imports: [
BrowserModule,
FormsModule,
HttpModule,
...sharedConfig.imports
],
providers: [
{ provide: 'ORIGIN_URL', useValue: location.origin }
]
我假设我需要在我的服务中使用ORIGIN_URL,但不太确定如何将其注入其中。我只是觉得我不应该使用这个网址: “http://localhost:{port#} / api / myController”在我的服务中。我是这样想的吗?
答案 0 :(得分:0)
如果你想注入,并使用该提供程序'ORIGIN_URL',你可以像这样使用构造函数注入。
import { Component, Inject } from '@angular/core';
import { Http } from '@angular/http';
...
export class MyService {
private url = '/api/myController';
constructor(private _http: Http, @Inject('ORIGIN_URL') private originUrl: string) {
}
public getAll = (): Observable<any> => {
return this._http.get(this.originUrl + this.url)
.map(data => data.json());
};
}
我无法确定为什么相对网址不再有效。
希望这有帮助。