路由前的角度超时

qum*_*uma 1 rxjs angular2-routing rxjs5 angular

更新联系后我将显示一条消息,在1500ms后我将路由到另一页.我是这样做的:

onSubmit() {
    if (this.form.valid) {            
        this.contactService.updateContact(this.contact).subscribe(response => {
            this.contactUpdated = true;
                Observable.interval(1500)
                  .subscribe(i => { 
                    this.router.navigate(['/commit']); 
                 })
              });
            }
          }
Run Code Online (Sandbox Code Playgroud)

这只能工作一次,在我用鼠标导航到另一个菜单后,我将自动路由回提交路径.有谁知道我做错了什么?

mar*_*tin 6

所以问题是你想要在1500ms后重定向用户一次,而不是每隔1500ms,甚至当用户已经在不同的页面上时.

Observable.interval在每个间隔后发出一个值,这样您就可以take(1)在单次发射后用来完成链:

Observable.interval(1500)
  .take(1)
  .subscribe(i => { 
     this.router.navigate(['/commit']); 
  })
Run Code Online (Sandbox Code Playgroud)

或者甚至更容易Observable.timer(1500)使用它只发出一次(如果你只使用第一个参数):

Observable.timer(1500)
  .subscribe(i => { 
     this.router.navigate(['/commit']); 
  })
Run Code Online (Sandbox Code Playgroud)