Почему, по вашему мнению, ngOnInit
должен бежать назад?он не
Решение состоит в том, чтобы использовать события маршрутизатора:
Например: Решение для обнаружения back
от "/beatles/john/songs/strawberryfields"
до "/doors/jim/girlfriend/pam"
Doors page --------> Beatles page.....(back tapped)----------->Doors
Is:
Добавьте этот метод в общую службу:
public onNavigatePreviousToCurrent(pre: string, current: string ): Observable<any>
{
return this.router.events.pipe(filter(e => e instanceof NavigationEnd), pairwise(), filter((f: [any, any]) =>
{
return f[0].url.toLowerCase()
.indexOf(pre.toLowerCase()) > -1 &&
f[1].url.toLowerCase()
.indexOf(current.toLowerCase()) > -1;
}) );
}
На странице Двери назовите его:
ngOnInit()
{
let f = this._routingService.onNavigatePreviousToCurrent("john", "pam") //or doors or jim
.subscribe((res) =>
{
//do what you want here !!!
}, (error) =>
{
});
//don't forget to unsubscribe `f`
}
Обратите внимание, что вы можете использовать любой токен из /beatles/john/songs/strawberryfields
(beatles
, john
, songs
, strawberryfields
, atles
) ----> также в Двери.(подстрока)
В основном этот метод определяет, откуда вы пришли и каков пункт назначения после back
.
Кстати, вы можете сказать: "ну, я не знаю, где яЯ только хочу, чтобы пользователь нажал «назад».
Ответ:
this._routingService.onNavigatePreviousToCurrent("/", "pam") ;
// "/" will always be present , so basically this ^ detects back from anywhere to Doors page