首頁 >web前端 >js教程 >Angular刷新目前頁面的方法介紹(附範例)

Angular刷新目前頁面的方法介紹(附範例)

不言
不言轉載
2018-11-21 11:32:534839瀏覽

這篇文章帶給大家的內容是關於php佇列實現的程式碼範例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

onSameUrlNavigation

  從angular5.1起提供onSameUrlNavigation來支援路由重新載入。 、

  有兩個值'reload'和'ignore'。預設為'ignore'

  定義當路由器收到一個導航到目前 URL 的請求時應該怎麼做。預設情況下,路由器將會忽略這次導航。但這會阻止類似 "刷新" 按鈕的特性。使用該選項可以配置導航到目前 URL 時的行為。

使用

設定onSameUrlNavigation

@NgModule({
  imports: [RouterModule.forRoot(
    routes,
    { onSameUrlNavigation: 'reload' }
  )],
  exports: [RouterModule]
})

  reload實際上不會重新載入路由,只是重新出發掛載在路由器上的事件。

設定runGuardsAndResolvers

  runGuardsAndResolvers有三個值:

  • paramsChange: 僅在路由參數變更時觸發。如/reports/:id 中id更改

  • paramsOrQueryParamsChange: 當路由參數變更或參訓參數變更時觸發。如/reports/:id/list?page=23中的id或page屬性更改

  • #always :始終觸發

const routes: Routes = [
  {
    path: '',
    children: [
      { path: 'report-list', component: ReportListComponent },
      { path: 'detail/:id', component: ReportDetailComponent, runGuardsAndResolvers: 'always' },
      { path: '', redirectTo: 'report-list', pathMatch: 'full' }
    ]
  }
];

元件監聽router.events

import {Component, OnDestroy, OnInit} from '@angular/core';
import {Observable} from 'rxjs';
import {Report} from '@models/report';
import {ReportService} from '@services/report.service';
import {ActivatedRoute, NavigationEnd, Router} from '@angular/router';

@Component({
  selector: 'app-report-detail',
  templateUrl: './report-detail.component.html',
  styleUrls: ['./report-detail.component.scss']
})
export class ReportDetailComponent implements OnInit, OnDestroy {
  report$: Observable<Report>;
  navigationSubscription;

  constructor(
    private reportService: ReportService,
    private router: Router,
    private route: ActivatedRoute
  ) {
    this.navigationSubscription = this.router.events.subscribe((event: any) => {
      if (event instanceof NavigationEnd) {
        this.initLoad(event);
      }
    });
  }

  ngOnInit() {
    const id = +this.route.snapshot.paramMap.get('id');
    this.report$ = this.reportService.getReport(id);
  }

  ngOnDestroy(): void {
    // 销毁navigationSubscription,避免内存泄漏
    if (this.navigationSubscription) {
      this.navigationSubscription.unsubscribe();
    }
  }

  initLoad(e) {
    window.scrollTo(0, 0);
    console.log(e);
  }
}

以上是Angular刷新目前頁面的方法介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除