Angular Rxjs Подписаться this.variable undefined в классе - PullRequest
0 голосов
/ 08 мая 2019

В моем приложении Angular 7 я реализовал некоторый код, чтобы получить маршрут последней страницы для создания функциональности в стиле «кнопки назад». Кажется, он работает и устанавливает this.referringRoute при возникновении события, но если я попытаюсь сослаться на this.referringRoute где-нибудь еще в классе, оно не определено. Я использую функции стрелок в наблюдаемом, поэтому я предположил бы, что «это», указанное в подписке, правильно распределено по классу «это», есть какие-нибудь мысли о том, где я иду не так? спасибо :) 1001 *

export class DetailsComponent implements OnInit {

    referringRoute: string;

    ngOnInit(): void {
        //get last page route and set to class variable
        this.router.events
            .pipe(filter((e: any) => e instanceof RoutesRecognized),
                pairwise()
            )
            .subscribe((e: any) => {
                this.referringRoute = e[0].urlAfterRedirects;
                console.log("PREVIOUS URL:", this.referringRoute); // previous url, logs as expected
            });
    }


    goBack() {
        console.debug("close called:", this.referringRoute); // this.referringRoute is always undefined
        if (this.referringRoute) {
            this.router.navigate([this.referringRoute]);
        } else {
            this.router.navigate(['/plants/collections']);
        }
    }
}

goBack вызывается из шаблона следующим образом:

<div (click)="goBack()">
...