0

我已经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;
  }
}

我只想倒退一步。

4

0 回答 0