Description:
Result:
PS:
Code:
constructor(private render: Renderer2, private router: Router,) {
this.render.listen('document', 'backbutton', ()=>{
this.backButtonEvent();
})
}
private backButtonEvent(){
this.router.navigate(['/home']).then(
()=>{
console.error('Navigate success');
},
()=>{
console.error('Navigate failed');
}
}
Using zone.run solved my problem.
ngZone maintain rerendering in angular.
I guess the problem I met was caused by the event listener outside of angular, however, my callback will affect the view.
So zone.run() force to rerender the view.
constructor(
private render: Renderer2,
private _zone: NgZone
) {
this.render.listen('document', 'backbutton', ()=>{
this.backButtonEvent();
})
}
private backButtonEvent(){
this._zone.run(
() => {
this.router.navigate(['/home'])
}
)
}