在切换到下一个路由之前执行http请求

莫希特·哈山(Mohit Harshan)

从页面导航到其他任何路线时,我都想执行发布请求。

我试过使用:

  this.subscriptionGrade = router.events
      .pipe(filter((event) => event instanceof NavigationStart))
      .pipe(
        concatMap(() => {
          return this.submitScore();
        })
      )
      .subscribe((res) => {
        this.snackBar.openSnackBar("Score submitted", "");
      });


  submitScore() {
    const score = { score: this.scoreForm.get("score").value };
    if (this.scoreForm.get("score").value) {
      return this.learningContentService.gradeAssignment(
        this.selectedAttempt,
        score
      );
    } else {
      return of(null);
    }
  }

这将执行http reuquest,但在从http请求接收到响应并且请求被取消之前,切换到下一个路由。

法塔赫·穆罕默德(Fateh Mohamed)

您可以在此路由上使用canDeactivate并检查http调用是否成功。

export interface CanComponentDeactivate {
 canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}

...

@Injectable()
class CanDeactivateComponent implements CanDeactivate<CanComponentDeactivate>{
 constructor() {}
 canDeactivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
 let data= route.data.data;
 return this.service.post(url, data)
   .pipe(
     map(response => response.status === 'success'),
     catchError(error => of(false))
   );
 }
}

你的路线

{
 path: 'yourRoute',
 component: Component,
 canActivate: [CanDeactivateComponent ],
 data: { data: {...}}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

切换到下一个textview

在循环中执行下一个HTTP发布之前,请先完成HTTP发布请求

Websocket-等待下一个Pusher事件之前执行HTTP请求回调

切换到DBExt中的下一个/上一个连接

切换到下一个/上一个应用程序的命令

深度学习:切换到下一个桌面

达到字符数限制时切换到下一个UITextField

在容器中显示网页,滚动,切换到下一个

如何更改“替代切换到下一个来源”

用于切换到下一个空间的Automator Apple脚本

在命令行中切换到下一个/上一个目录的快速方法

定期调用可观察对象,仅在下一个成功时切换到下一个

在执行下一个操作之前,如何等待请求完成(Xcode 11)

如果条件不符合,Dart会继续切换到下一个案例

为什么切换到下一个工作空间时活动窗口最小化?

切换到图库中的下一个视频时,如何使HTML视频暂停播放

当我切换到小型设备时,我的 div 内容与下一个 div 重叠

jQuery使用条形码阅读器切换到下一个字段

进度条动画结束后,我无法切换到下一个屏幕

切换到上次使用的键盘布局而不是下一个/上一个键盘布局(就像 Gboard 一样)

如何编写xrandr的scale函数脚本以切换到预定义列表中的下一个或上一个分辨率?

Javascript-确保在执行下一个脚本之前执行一个脚本

如何在执行下一个操作(获取)之前等待所有请求完成

下一个列表切换时如何关闭切换

Oracle Forms-用户输入10个字符后,如何自动切换到下一个字段?

操作默认快捷键 Super+Space 切换到下一个输入源,无需图形表示

Unity3D Shooter-在摧毁所有敌人后如何切换到下一个等级?

如何在执行下一个史诗之前确保完成一个史诗?

不转换到 for 循环中的下一个