Angular 2 - 所有组件的全局变量

标签 angular

我的 angular2 应用程序在许多不同的组件中使用我的后端 laravel API。 我一直在想,将来我需要更改API URL。这意味着我将不得不在所有地方(在所有组件中)更改我的 API URL 我已经对我的 API 使用了 http get/post 方法。

现在.. 实现一个变量来存储 API URL 并在我的所有组件中使用它的正确方法是什么?

  1. 仅用于设置获取 API URL 的服务
  2. 我的每个 API 对象都有一个不同的服务,例如 userAPI.service 与用户相关的 API 调用,peopleAPI.service 与人相关的 API 调用,gameAPI.service 与游戏相关的 API 调用等。
  3. 还有什么我还不知道的不同之处吗?

最佳答案

您可以通过扩展 BaseRequestOptions 类来为此提供您自己的请求选项。这样,您的 Web API 的基础 URL 将在一个地方定义:

import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from 'angular2/http';

export class CustomRequestOptions extends BaseRequestOptions {

  merge(options?:RequestOptionsArgs):RequestOptions {
    options.url = 'http://10.7.18.21:8080/api' + options.url;
    return super.merge(options);
  }

}

在使用 Http 对象的类中,您现在只需要使用路径而不是整个 URL。这是一个示例:

this.http.get('/someresource')...

然后您需要在引导您的应用程序时注册它。

bootstrap(AppComponent, [
  HTTP_PROVIDERS,
  provide(RequestOptions, {useClass: CustomRequestOptions})
]);

有关详细信息,请参阅此链接:

关于Angular 2 - 所有组件的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661196/

相关文章:

angular - Rxjs 返回顺序运行的两个 observable 的第一个结果

angular - 在 Angular2 中使用 jQuery 插件

javascript - 无法从 Ionic2 的回调中访问本地属性

html - Angular ng serve 不在本地主机上托管站点

angular - Vs Code nx 控制台生成命令不起作用 : This command has no flags to set

angular - *ngFor 使用一个函数,返回一个循环

Angular2 EventEmitter 和 preventDefault()

angular - 如果满足条件,稍后使用 takeUntil 取消订阅

javascript - Angular 2 ngFor - 使用索引反转输出顺序

angular - @ViewChildren 不会更新动态添加的 DOM 元素