@thierryが提供する答えとして、あなたは1つの共通クラス/サービスを使用することができますビットextends
と混同し、すべてをすべてのグローバル変数を保存し、ブートストラップ時にそのクラスを注入することができます。これにより、クラスがアプリケーション全体の他のすべてのクラス/コンポーネントで利用できるようになりました。ルちょうど一箇所に変更はなく、ここではすべてのコンポーネントの変更を行うことにより値が同じの一例である -
import {Component, Injecable} from 'angular2/core';
import {Http, Response, RequestOptions, Headers, Request, RequestMethod} from 'angular2/http';
@Injecable()
export class GlobalService {
public base_path: string;
public headers: Headers;
public requestoptions: RequestOptions;
public res: Response;
constructor(public http: Http, public router: Router) {
this.base_path = "http://128.199.190.109/api/";
}
public getRequsetOptions(url: string): RequestOptions {
this.headers = new Headers();
this.headers.append("Content-type", "application/json");
this.headers.append("Authorization", 'Bearer ' + localStorage.getItem('id_token'));
this.requestoptions = new RequestOptions({
method: RequestMethod.Get,
url: url,
headers: this.headers
});
return this.requestoptions;
}
}
、ちょうどこのようなブートストラップでは、このサービスクラスを登録 -
bootstrap(AppComponent, [
HTTP_PROVIDERS,GlobalService , XYZ...
]);
今、このGlobalService
クラス
また、angleクラス自体がすべてのコンポーネントに対してこれを初期化するので、使用するたびにこのクラスをプロバイダのリストに登録する必要はありません。これらのグローバル変数/関数は、すべての別のクラスで使用します。このようなクラス -
import {GlobalService} from './GlobalService';
import {Http} from 'angular2/http';
@Injectable()
export class ABC {
constructor(private base_path_service: GlobalService, private http: Http) {}
SomeMethod(url) {
return this.http.request(new Request(this.base_path_service.getRequsetOptions(url)))
.map(res=> {
// DO your code
});
}
恐ろしいですね!しかし私が 'boot.ts'で' provide 'を使うと、次のエラーが出ます: 'Error:ReferenceError:provide is not defined'。それはそれです: 'import {CustomRequestOptions} from"。/ヘルパー/ CustomRequestOptions "; ストラップ(AppComponent、[ JwtService、 HTTP_PROVIDERS、 ROUTER_PROVIDERS、 MATERIAL_PROVIDERS、 SidenavService、 提供(RequestOptions、{useClass:CustomRequestOptions}) ]); ' – TheUnreal
はい、必要な"angular2/core"モジュールから "provide"関数をインポートするには... –
これは非常にうれしいことですが、** http.post *と** http.put **では動作しません** http.request **のために動作しますので、** this.http.request( '/ user/1'、{body:body、method: 'PUT'})** – tibbus