如何解决如何在 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 举报,一经查实,本站将立刻删除。