【发布时间】:2019-01-04 15:22:14
【问题描述】:
我有一个非常奇怪的错误。花了几个小时试图修复它,但仍然没有任何线索。 我将解释我遇到的问题的一个非常基本的版本。 我有一个简单的 Angular 页面,在 init 上调用一个 REST 服务,返回的数据将用于填充一些菜单选项..
下面的代码可以正常工作。
ngOnInit() {
//this.Envi.BaseLink + `api/V2Startup?userid=${this.Envi.Userid}`
this.http.get('http://dagilitywebv2/api/V2Startup?userid=TES0049').pipe(
map((data: any) => ({
Locations: data.Locations,
MenuItems: (<any[]>data.Menu).map(mnu => ({ GroupName: mnu.GroupName, MenuList: mnu.MenuList, ExpandTree: true }))
})),
).subscribe((data: any) => {
this.Locations = data.Locations;
this.MenuItems = data.MenuItems;
});
}
但是如果我用
替换硬编码的 URLthis.Envi.BaseLink + `api/V2Startup?userid=${this.Envi.Userid}`
我收到 404 错误。最初我的印象是 this.Envi.BaseLink 没有正确的值,所以我做了一个 console.log,
console.log(this.Envi.BaseLink + `api/V2Startup?userid=${this.Envi.Userid}`);
this.http.get(this.Envi.BaseLink + `api/V2Startup?userid=${this.Envi.Userid}`).pipe
下面是我看到的。 console.log 打印了正确的 URL。但是在我的 $http.get 中添加了我网站的 dev 域,即 它将地址视为相对于我的根目录。
- http://dangularv6 是我的 Angular 页面所在的位置。
- http://dagilitywebv2/api/V2Startup?userid=TES0049 是我正在尝试调用的服务。
- 但是当 this.http.get 被调用时。一些它是如何拨打电话的 http://dangularv6/dagilitywebV2//api/V2Startup?userid=TES0049,即将其视为相对 URL。
- 如果我再次使用 http://dagilitywebv2/api/V2Startup?userid=TES0049 进行硬编码,它可以正常工作。
当我在本地运行我的 Angular 应用程序 (localport:4200) 时,同样的代码可以正常工作,但是当我将它移动到开发服务器以在 http://dangularv6 下运行时,$http.get 将此前缀添加到我的服务 URL。
我不知道为什么会这样……有什么帮助吗?
更新: 环境.ts
export const environment = {
production: false,
baselink: 'http://dagilitywebv2.lkq.lkqx.net/',
};
可注入类
@Injectable({providedIn: 'root'})
export class UserEnvironment {
constructor() {this.BaseLink = environment.baselink;}
}
在组件中
import { UserEnvironment } from '../app-constants';
constructor(private http: HttpClient, private Envi: UserEnvironment) { }
【问题讨论】:
-
当你
console.log(this.Envi.BaseLink)时它会打印什么? -
你得到 // 在 api 之前,尝试 http.get( `${this.Envi.BaseLink}api/V2Startup?userid=${this.Envi.Userid}.pipe(... )
-
dagilitywebv2/api/V2Startup?userid=TES0049 应该是这样,(在我的屏幕截图中以黄色突出显示)
-
它可能是base-href吗? Angular 应用是部署在根文件夹还是子文件夹中?
-
你的 environment.ts 呢?
Envi.baseLink定义在哪里?以及对 base-href 的另一票
标签: angular