有时我的角度应用程序会更新。该应用程序已经上线,并且一些常见的使用场景是当用户根本没有关闭浏览器选项卡时,因此可以永久使用没有检查的过期版本。
我已经实现了一种机制来检查后端的应用程序版本,因此来自过时版本的所有调用都将被拒绝。
下一步是向用户显示一些“需要更新”对话框以防止此类后端拒绝,如果确认,最好不要强制用户手动按“Ctrl + F5”,而是自动从应用程序执行此操作。
可能吗?
我们需要使用拦截器来检测错误,如果检测到错误,那么我们使用window.location.reload(true)重新加载页面;它将删除缓存并重新加载页面。
@Injectable()
export class myInterceptor implements HttpInterceptor {
constructor() { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
catchError(error => this.handleError(error))
);
}
private handleError(error: HttpErrorResponse): Observable<any> {
if (error.status === 404) {
// Do your thing here
window.location.reload(true);
}
}
我希望它会帮助你。