我已经CanDeactive
在最新版本的Angular2+中实现了 Guard ,
但是每当我点击浏览器的后退按钮时,第一次它让我留在同一页面上(没关系),但第二次它后退了两步。
这是我的代码:
@NgModule({
imports: [
CommonModule,
RouterModule.forRoot([
{
path: 'home',
component: HomeComponent,
canDeactivate: [HomeGuard]
}
])
],
declarations: [
HomeComponent
],
providers: [HomeGuard],
exports: [RouterModule]
})
export class HomeModule {
}
家庭组件
@Component({
template: '<p>home works!</p>'
})
export class HomeComponent {
public counter = 2;
}
和家庭卫士
@Injectable()
export class HomeGuard implements CanDeactivate<HomeComponent> {
canDeactivate(component: HomeComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot,
nextState?: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
component.counter--;
return component.counter === 0;
}
}
我只想倒退一步。