2017-06-01 60 views
0

我正在使用Microsoft.AspNetCore.Spatemplates,現在正在角4.1.2上運行。當我使用以前版本的使用angular 2.4的Spatemplates時,我可以通過使用相對URL在下面看到的角色服務對我的.NET控制器執行http.get。從2.4升級到Angular 4.1.2,現在爲什麼需要絕對的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

如果你想注入,並使用該提供者'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()); 
    }; 
} 

我不能肯定地說爲什麼相對URL不再起作用。

希望這會有所幫助。

+0

我欣賞關於構造函數注入的提示。這工作完美。 – mbow