我正在编写Angular2应用程序,我想从浏览器中处理后退和前进按钮。
想法是在控制台中编写“后退”单击时的消息,以及“前进”时单击不同的消息。
我使用以下代码:
import { Location } from '@angular/common';
export class AppComponent implements OnInit {
constructor(private location: Location) {}
ngOnInit() {
this.location.subscribe(x => { [custom message] });
}
}
问题是:如果单击是向后还是向前,则无法识别单击,以便在控制台中写入正确的消息。
如何在angular2中检查它?我不知道我应该在Google上搜索什么。所有答案都将处理该事件,但要对其进行区分。
附言如果在javascript中,它对我有用。
谢谢。
最佳答案
我还需要区分Angular(5)中的后退按钮和前进按钮,以实现路线转换的动画效果。我找不到解决方案,因此提出了一个解决方案。
将以下内容添加到服务。
private popState: boolean = false;
private urlHistory: string[] = [];
private popSubject: Subject<boolean> = new Subject();
constructor(private location: Location, private router: Router) {
location.subscribe(event => {
let fwd = false;
if (this.urlHistory.lastIndexOf(event.url)) {
this.urlHistory.push(event.url);
}
else {
fwd = true;
this.urlHistory.pop();
}
this.popState = true;
this.popSubject.next(fwd);
})
router.events.subscribe(event => {
if (event instanceof NavigationEnd) {
if (!this.popState)
this.urlHistory = [this.router.url];
this.popState = false;
}
})
}
get popEvent$() {
return this.popSubject.asObservable();
}
进口:
import { Location } from '@angular/common';
import { NavigationEnd, Router } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
如果不需要外部监听事件,请删除popSubject和popEvent $。