即使组件类没有重定向Angular5,为什么我被重定向

时间:2018-03-31 11:15:30

标签: angular angular-routing

我正面临这种奇怪的情况。我在延迟加载的模块中有3条路由。

confirm.route

  this.sub =  this._route.params.subscribe((params: Params) => {
        const txn_id = params['id'];
        const transactions = this.store.select(fromStore.getAllTransactions);
         this.store.dispatch(  new actions.Query() );
          transactions.subscribe(data => {
          this.transaction =  data.filter((item) => {
             return item.id === txn_id;
          });
          this.transaction = this.transaction[0];

          if(this.transaction) {
            if(this.transaction.payStatus){
               this._notify.update('This transaction is completed.
 You will be redirected!', 'info');
              setTimeout(() => {
                this._router.navigate([`/success/${this.transaction.id}`]);
              }, 3000);
            }
          }
       });
      });

success.route

  this.sub =  this._route.params.subscribe((params: Params) => {
      const txn_id = params['id'];
      const transactions = this.store.select(fromStore.getAllTransactions);
       this.store.dispatch(  new actions.Query() );
        transactions.subscribe(data => {
        this.transaction =  data.filter((item) => {
           return item.id === txn_id;
        });
        this.transaction = this.transaction[0];
        if(this.transaction) {
          if(!this.transaction.payStatus){
            this._notify.update('This transaction is not completed.
 You will be redirected!', 'info');
            setTimeout(() => {
              this._router.navigate([`confirm/${this.transaction.id}`]);
            }, 3000);
          } 
        }
     });
    });

status.route

 onStatusSubmit(){
    const txn_id = this.statusForm.value.txn_id;
      const transactions = this.store.select(fromStore.getAllTransactions);
       this.store.dispatch(  new actions.Query() );
       transactions.subscribe(data => {
        this.transaction =  data.filter((item) => {
           return item.tx_id === txn_id;
        });
        this.transaction = this.transaction[0];
     });
     this.transactionOk = true;
  }

confirm.route 组件类中,存在一个条件。如果条件为真,则重定向到 success.route 。 这很好..

现在,在 success.route 中,我有一个routerLink导航到 status.route 。这也很好。

然后在status.route中我有一个模板表单。

问题出现了,当我从确认.route 时,它会按预期将我重定向到 success.route 。当我点击 status.route 时,它运行正常。

但是,如果我在 status.route 中提交表单,则会将我重定向到 success.route

status.route 中,没有重定向条件。

注意:我确实在成功和确认课程上都使用了ngOnDestroy。       如果我在 success.route status.route 上重新加载页面,它就可以正常运行。

那么,当我在 confirm.route 时,为什么 status.route 中的条件仍然有效?这是由于ngrx?

0 个答案:

没有答案