我有一个非常奇怪的错误。花费了数小时试图修复它,但仍然没有任何线索。 我将解释我遇到的问题的非常基本的版本。 我有一个简单的角度页面,在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 中,即它将地址视为相对于我的根地址。
当我在本地运行我的角度应用程序(localport:4200)时,相同的代码也可以正常工作,但是当我将其移至开发服务器以在http://dangularv6下运行时,$ http.get将此前缀添加到我的服务URL中。
我不知道为什么会发生..有什么帮助吗?
更新: 环境
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) { }
答案 0 :(得分:0)
您的Envi Baselink必须断开,因为get试图转到http://dangularv6/dagilitywebv2//
在Envi中,也许您的客户端需要一个BaseUrl,而服务器则需要一个BaseUrl,这样您就可以使用BaseUrl(在某些情况下使用BaseUrl)和在其他情况下使用ServerUrl代替
虽然我可能是错的