路由前的 Angular 超时

标签 angular rxjs angular2-routing rxjs5

更新联系人后我会显示一条消息,1500 毫秒后我会转到另一个页面。我是这样做的:

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

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

最佳答案

所以问题是你想在 1500 毫秒后重定向用户一次,而不是每 1500 毫秒,即使用户已经在不同的页面上也是如此。

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

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

或者您可以使用只发出一次的 Observable.timer(1500) 更简单(如果您只使用第一个参数):

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

关于路由前的 Angular 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131892/

相关文章:

html - Angular 2路由到网页的特定部分,从一个组件链接到另一个组件

javascript - 导航到 Angular 2 中的当前路线?

angular - 使用动态导入延迟加载组件时编译器发出警告

angular - 模块是否会在延迟加载模块中加载两次

node.js - Angular、Electron、TypeScript 和 RobotJS

javascript - Angular 2执行登录身份验证(我进入无限循环。)

javascript - 在 Angular 2 中的应用程序模板之外定义路由链接

angular - 如何在不重新查询服务器的情况下更新可观察数组中的对象?

Angular 8 订阅拦截器中的可观察对象

如果数字超过 1000,Angular2+ 货币管道将不起作用