2016-08-02 4 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

はon keydownイベントオプション? – Jinjubei

+0

私はそれがバックコールかどうかを検出する必要があります – Karl

答えて

-1

は、サービス内の変数を作成してそれをfalseに初期化し、ngOnInit method.Sinceサービス内のtrueに設定し、一度だけ初期化される、ngOnInitに追加します -

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

サービスが初期化されるのは1回だけです。つまり、アプリケーションがブートストラップされ、コンポーネントのメタデータ内にない場合です。ページがリフレッシュされると、フラグの値は最初はfalseになり、コンポーネントが戻るボタンを使用してアクセスされる場合はtrueになります。

+0

それは私が必要とするものではありません。バックボタンが押されたときに知っておく必要があります。そうでなければそれを呼び出す – Karl

関連する問題