我正在使用Angular 6,并且试图检查_appconfig.json
文件是否在根目录下。如果文件不存在,我想将http.get()调用指向另一个URL。但是,我似乎无法使事情表现得像我想要的那样,并且想知道是否有人可以在这里帮助我。
如果该文件不存在,我该如何更改URL?
configUrl = "_appconfig.json";
constructor(private http: HttpClient) {}
data: any;
getConfig(): Promise<configType> {
return this.http
.get(this.configUrl)
.toPromise()
.then(response => response as configType)
.catch(this.handleError);
}
对于它的价值,如果文件确实存在,此行为将按预期进行。
答案 0 :(得分:3)
这可能是可以帮助您的解决方案。 重要的是要捕获该错误,如果该错误恰好是404错误,则可以确定找不到该文件。
我建议您使用可观察对象而不是应许对象,但是它们也应该以类似的方式工作。
在此示例中,我尝试加载“ test.txt”,如果找不到该文件,则将加载second.json。
private loadMainFile() {
this.httpClient.get('/asset/test.txt').subscribe(() => {
// HANDLE file found
}, (err) => {
// HANDLE file not found
if (err.status === 404) {
this.loadSecondFile();
}
});
}
private loadSecondFile() {
this.httpClient.get('/asset/second.json').subscribe(() => {
// HANDLE file found
}, () => {
// HANDLE file not found
});
}