单击Angular 2上的空白时页面重定向

时间:2019-05-29 09:46:18

标签: angular typescript angular2-routing angular7 angular-routing

从服务器收到一些响应后,我想重定向到另一个页面。 (此过程太慢,几乎需要60秒钟才能从服务器获得响应)。同时,我将展示一些微调器,当收到响应时,我将重定向到另一页面。看起来很简单?

是的,但是问题是,在收到响应时页面不会自动重定向。它停留在同一页面上,现在,如果我单击页面上的任意位置,它将重定向到另一个页面,情况有点奇怪。

this.optimizationService
      .runOptimization(this.runOptimizationModel)
      .subscribe(optimizationResult => {  // this is the first service which send request to server.

        this.optimizationService.notificationEvent.subscribe(eventData => {
          console.log(eventData); // this is another service in which, when I will get the response, I want to redirect to another page. 
          if (eventData && eventData.length) {
            this._router.navigate([this.optimizationResultScreenURL, 'e1517589-905e-485b-b7ee-7bc6521dcc93']); // This is url rerouting. If I cut and paste this line after first service subscription, it is working fine. 
          }
        });
      });

是这种情况,因为我们在60秒后收到第二个服务的响应。这是一个有点奇怪的情况,但是它正在发生。  这是60秒的 villain

1 个答案:

答案 0 :(得分:2)

您可以按照这些方法尝试一些吗? (多个嵌套订阅不是一个好习惯)

this.optimizationService
      .runOptimization(this.runOptimizationModel)
      .pipe(
            switchMap(optiResult => this.optimizationService.notificationEvent),
            filter(eventData => eventData && eventData.length),
            tap(eventData => this._router.navigate(/* extract URL data here */))
      )
      .subscribe();

我不清楚第一个请求的作用或在哪里使用它的响应,但是我的回答是使用RxJS运算符来控制流程。希望这是有用的。