微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Angular Typescript 中设置 BASE_URL?

如何解决如何在 Angular Typescript 中设置 BASE_URL?

我正在尝试将 BASE_URL 注入到我所有组件的 TS 文件中。但我不确定它是在哪里创建的或如何设置?

我试图避免写出每个文件的完整 URL,以避免必须根据我运行它的设备或是否部署它来更改它。现在我将它设置为一个字符串

"localhost:44347/*whatever*"

我希望能够注入 localhost 或 URL 的基本部分,而不必事先知道我使用的是哪个端口。这可能吗?你会怎么做?

EX:(这是我最想看到的)

 constructor(private http: HttpClient,@Inject('BASE_URL') baseUrl: string) {
  }

  getUrl(): Observable<any[]> {
    return this.http.get<any[]>(baseUrl)
  }

编辑:

这是我尝试实现的,但是我仍然无法在我的函数中使用“baseUrl”。

constructor(private http: HttpClient,@Inject('BASE_URL') baseUrl: string) {
    http.get<WeatherForecast[]>(baseUrl + 'API/weatherforecast').subscribe(result => {
      this.forecasts = result;
    },error => console.error(error));
  }

 getUrl(): Observable<any[]> {
        return this.http.get<any[]>(baseUrl)
      }

解决方法

您应该能够在您的项目或库中的某处设置一个 InjectionToken

以下内容应该对您有用:

export const BASE_URL: InjectionToken<string> = new InjectionToken<string>('baseURL');

然后在您的应用模块中为您的令牌添加一个提供程序到 providers 数组:

{ provide: BASE_URL,useValue: 'localhost:44347/*whatever*'}

从那里你应该能够像上面的例子一样注入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。