Невозможно получить предыдущий URL из конструктора в Angular 5 - PullRequest
0 голосов
/ 05 марта 2019

Возможность получить предыдущий URL в конструкторе, подписавшись на события маршрутизатора. Зарегистрированный и проверенный в конструкторе, но, при нажатии на кнопку назад, кнопка не может получить его в метод.

Конструктор:

previousUrl: string;

 constructor(
    private router: Router,
   ) {
    this.router.events
      .pipe(filter((e: any) => e instanceof RoutesRecognized),
        pairwise()
      ).subscribe((e: any) => {
        this.previousUrl = e[0].urlAfterRedirects;
        console.log('this is it' + this.previousUrl); // previous url
    });
  }

GoBack ():

 goBack() {
      console.log('******************************' + this.previousUrl);
      this.router.navigate([ this.previousUrl ]);
   }

1 Ответ

0 голосов
/ 05 марта 2019

попробуйте приведенный ниже фрагмент кода, он работал для меня

Служба маршрутизатора:

   import { Injectable } from '@angular/core';
    import { Router, NavigationEnd } from '@angular/router';

    @Injectable()
    export class RouterService {
        previousUrl: string = 'none';
        constructor(
            private router: Router
          ) {
            this.router.events
              .subscribe((event) => {
                if (event instanceof NavigationEnd) {
                  this.previousUrl = event.url;
                }
              });
          }
    }

В вашем компоненте

 import { Component, OnInit } from '@angular/core';

    @Component({
        selector: 'app-some',
        template: `<span *ngIf="prevUrl !== 'none'>Back</span>`,
        styles: [``]
    })
    export class SomeComponent implements OnInit {
        prevUrl;
        constructor(private routerService: RouterService) { 
            this.prevUrl == routerService.previousUrl;
        }

        ngOnInit() { }
    }

     goBack() {
          console.log('******************************' + this.prevUrl );
          this.router.navigate([ this.prevUrl ]);
       }
...