我使用Angular 4作为自定义组件,仅在一个页面上传音频(它不是SPA) . 文件上传后我想将浏览器重定向到页面 http://website/profile/tracks
.
我的服务电话看起来像:
this.uploadService.uploadTrack(this.trackForm, csrfToken).subscribe(res => {
this.redirectToTracks();
this.loading = false;
}, err => {
this.loading = false;
});
上传服务:
uploadTrack(track, csrfToken): Observable<any> {
const headers = new HttpHeaders().set('Csrf-Token', csrfToken);
return this.http.post('/profile/upload', track, {headers: headers});
}
和重定向功能:
redirectToTracks() {
window.location.href = '/profile/tracks';
}
但它不起作用,似乎Angular称之为后台请求:
如果我将console.log(res)放入订阅中,则会在那里记录重定向
但是,如果我只在ngOnInit()中重定向它就可以了!
1 回答
解决方案是使用NgZone: