Angular で現在のページを更新するにはどうすればよいですか?手法の紹介
この記事では、現在のページを更新するための Angular メソッドをいくつか紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
現在のページを更新する Angular のいくつかのメソッド
デフォルトでは、現在の URL に移動するリクエストがあったときを受信しても、Angular ルーターはそれを無視します。
<a routerLink="/heroes" routerLinkActive="active">Heroes</a>
同じリンクを繰り返しクリックしても、ページは更新されません。
onSameUrlNavigation 属性は、ルートのリロードをサポートするために Angular 5.1 から提供されています。
@NgModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})], exports: [RouterModule] })
onSameUrlNavigation には、「reload」と「ignore」という 2 つのオプション値があります。デフォルトは「ignore」です。ただし、onSameUrlNavigation を 'reload' に変更するだけでは RouterEvent イベントがトリガーされるだけで、ページはリロードされません。他のメソッドを使用する必要があります。続行する前に、ルーター トレースを有効にし、ブラウザ コンソールからルーティング イベント ログを確認します:
@NgModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload', enableTracing: true})], exports: [RouterModule] })
onSameUrlNavigation が構成されていない場合、同じリンクを再度クリックしてもログが出力されないことがわかります。onSameUrlNavigation を ' として構成します。 reload ' を実行すると、NavigationStart、RoutesRecognized、GuardsCheckStart、GuardsCheckEnd、ActivationEnd、NavigationEnd などのイベントを含むログが出力されます。
関連チュートリアルの推奨事項: "angular チュートリアル"
以下では、現在のページを更新するいくつかの方法を紹介します:
NavigationEnd
##1. onSameUrlNavigation を「reload」として設定します2. NavigationEnd イベントをリッスンします Router イベントをサブスクライブし、NavigationEnd でデータをリロードし、破棄しますコンポーネント Unsubscribe:export class HeroesComponent implements OnDestroy { heroes: Hero[]; navigationSubscription; constructor(private heroService: HeroService, private router: Router) { this.navigationSubscription = this.router.events.subscribe((event: any) => { if (event instanceof NavigationEnd) { this.init(); } }); } init() { this.getHeroes(); } ngOnDestroy() { if (this.navigationSubscription) { this.navigationSubscription.unsubscribe(); } } ... }
RouteReuseStrategy
1. onSameUrlNavigation を「reload」に設定します2. RouteReuseStrategy をカスタマイズし、Route を再利用しません実装方法は 2 つあります:コード内の戦略を変更します:
constructor(private heroService: HeroService, private router: Router) { this.router.routeReuseStrategy.shouldReuseRoute = function () { return false; }; }
import {ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy} from '@angular/router'; export class CustomReuseStrategy implements RouteReuseStrategy { shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; } store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle | null): void { } shouldAttach(route: ActivatedRouteSnapshot): boolean { return false; } retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null { return null; } shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean { return false; } }
@NgModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})], exports: [RouterModule], providers: [ {provide: RouteReuseStrategy, useClass: CustomReuseStrategy} ] })
Resolve
Resolve を使用すると、ルートがアクティブ化される前にデータを準備できるように、事前にサーバーからデータを取得できます。 1. ResolverService の実装コンポーネント内の初期化コードを Resolve に転送します:import {Injectable} from '@angular/core'; import {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router'; import {Observable} from 'rxjs'; import {HeroService} from '../hero.service'; import {Hero} from '../hero'; @Injectable({ providedIn: 'root', }) export class HeroesResolverService implements Resolve<Hero[]> { constructor(private heroService: HeroService) { } resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Hero[]> | Observable<never> { return this.heroService.getHeroes(); } }
path: 'heroes', component: HeroesComponent, canActivate: [CanActivateAuthGuard], resolve: {heroes: HeroesResolverService}
constructor(private heroService: HeroService, private route: ActivatedRoute) { } ngOnInit() { this.route.data.subscribe((data: { heroes: Hero[] }) => { this.heroes = data.heroes; }); }
{path: 'heroes', component: HeroesComponent, canActivate: [CanActivateAuthGuard], resolve: {heroes: HeroesResolverService}, runGuardsAndResolvers: 'always'}
タイム スタンプ
ルーターに時間パラメータを追加します:
<a (click)="gotoHeroes()">Heroes</a>
constructor(private router: Router) { } gotoHeroes() { this.router.navigate(['/heroes'], { queryParams: {refresh: new Date().getTime()} }); }
constructor(private heroService: HeroService, private route: ActivatedRoute) { this.route.queryParamMap.subscribe(params => { if (params.get('refresh')) { this.init(); } }); }
プログラミング ビデオ を参照してください。 !
以上がAngular で現在のページを更新するにはどうすればよいですか?手法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、Angular の学習を継続し、Angular のメタデータとデコレータを理解し、それらの使用法を簡単に理解します。

Angular.js は、動的アプリケーションを作成するための無料でアクセスできる JavaScript プラットフォームです。 HTML の構文をテンプレート言語として拡張することで、アプリケーションのさまざまな側面を迅速かつ明確に表現できます。 Angular.js は、コードの作成、更新、テストに役立つさまざまなツールを提供します。さらに、ルーティングやフォーム管理などの多くの機能も提供します。このガイドでは、Ubuntu24 に Angular をインストールする方法について説明します。まず、Node.js をインストールする必要があります。 Node.js は、ChromeV8 エンジンに基づく JavaScript 実行環境で、サーバー側で JavaScript コードを実行できます。ウブにいるために

この記事では、Angular のステートマネージャー NgRx について深く理解し、NgRx の使用方法を紹介します。

Angularでモナコエディタを使用するにはどうすればよいですか?以下の記事は、最近業務で使用したangularでのmonaco-editorの使い方を記録したものですので、皆様のお役に立てれば幸いです。

Angular Universal をご存知ですか?これは、Web サイトがより優れた SEO サポートを提供するのに役立ちます。

この記事では、Angular の実践的な経験を共有し、angualr と ng-zorro を組み合わせてバックエンド システムを迅速に開発する方法を学びます。

インターネットの急速な発展に伴い、フロントエンド開発テクノロジーも常に改善され、反復されています。 PHP と Angular は、フロントエンド開発で広く使用されている 2 つのテクノロジーです。 PHP は、フォームの処理、動的ページの生成、アクセス許可の管理などのタスクを処理できるサーバー側スクリプト言語です。 Angular は、単一ページ アプリケーションの開発やコンポーネント化された Web アプリケーションの構築に使用できる JavaScript フレームワークです。この記事では、PHPとAngularをフロントエンド開発に使用する方法と、それらを組み合わせる方法を紹介します。

この記事では、Angular の独立コンポーネント、Angular で独立コンポーネントを作成する方法、および既存のモジュールを独立コンポーネントにインポートする方法について説明します。
