2016-08-02 57 views
1

我试图检测加载此组件时是否按下了后退按钮。在ngOnInit()中,我想知道Back是否被点击,所以我不清除我所有的过滤器。下面是代码:在Angular2中按下检测返回按钮

export class ProductListComponent implements OnInit, OnDestroy { 
constructor (private _productsService: ProductsService, params: RouteParams, private _categoriesService: CategoriesService, private _filtersService: FiltersService, private _router: Router, private _location: Location) { 
    this.category = params.get('name') ? params.get('name') : null; 
} 

subscription: any; 
category: any; 
loading: boolean = false; 
page: number = 1; 
count: number; 
products: any; 
pages: Array = []; 
errorMessage: string; 

ngOnInit() { 

    this.getProducts(); 

    //if(back button wasnt used) { 
    // this._filtersService.clear(); 
    //} 

    this.subscription = this._filtersService.filterUpdate.subscribe(
     (filters) => { 
      this.page = 1; 
      var params = this.category ? {name: this.category} : {}; 
      this._router.navigate([this.currentRoute, params]); 
      this.getProducts(); 
     } 
    ); 
} 
+0

是关于keydown事件而非选项? – Jinjubei

+0

我需要检测它是否回拨 – Karl

回答

-1

创建服务的变量,它初始化为false,并将其设置为ngOnInit method.Since服务中真正得到一次初始化,加入ngOnInit: -

ngOnInit(){ 
    if(!this._filterService.flag) this._filterService.clear() 
    this._filterService.flag = true; 
    //rest of your code 
} 

确保服务只初始化一次,即当应用程序被引导时,而不是在组件的元数据中。如果页面被刷新,则标志值将最初为假,如果使用后退按钮访问组件,则该值为true

+0

这不完全是我需要的,我需要知道何时按下后退按钮,所以我不会调用该服务操作。否则称它 – Karl