Heim >Web-Frontend >js-Tutorial >Wie kann verhindert werden, dass bestimmte Routen mithilfe der ShouldDetach-Methode von RouteReuseStrategy in Angular 2 gespeichert werden?

Wie kann verhindert werden, dass bestimmte Routen mithilfe der ShouldDetach-Methode von RouteReuseStrategy in Angular 2 gespeichert werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 06:40:02656Durchsuche

How to prevent specific routes from being stored using RouteReuseStrategy's shouldDetach method in Angular 2?

So implementieren Sie ShouldDetach von RouteReuseStrategy für bestimmte Routen in Angular 2

Routing ist ein wesentlicher Bestandteil jeder Single-Page-Anwendung, und die Routing-Funktionen von Angular 2 sind recht leistungsstark. Eine der nützlichsten Funktionen des Angular 2-Routers ist die Möglichkeit, den Status einer Route zu speichern, damit er später wiederverwendet werden kann. Dies erfolgt durch die Implementierung der RouteReuseStrategy-Schnittstelle.

Die RouteReuseStrategy-Schnittstelle verfügt über eine Reihe von Methoden, die implementiert werden können, um anzupassen, wie Routen gespeichert und wiederverwendet werden. Eine der wichtigsten Methoden ist ShouldDetach, mit der bestimmt wird, ob eine Route gespeichert werden soll, wenn der Benutzer sie verlässt.

Standardmäßig speichert Angular 2 den Status aller Routen, die gespeichert werden navigiert zu. Es kann jedoch vorkommen, dass Sie die Speicherung bestimmter Routen verhindern möchten. Beispielsweise möchten Sie möglicherweise nicht den Status einer Route speichern, die einen modalen Dialog oder einen Ladebildschirm anzeigt.

Um zu verhindern, dass eine Route gespeichert wird, können Sie die Methode ShouldDetach implementieren und false zurückgeben. Dadurch wird Angular 2 angewiesen, den Status der Route nicht zu speichern, wenn der Benutzer von der Route weg navigiert.

Hier ist ein Beispiel für die Implementierung der Methode ShouldDetach:

<code class="typescript">import { Injectable } from '@angular/core';
import { RouteReuseStrategy, DetachedRouteHandle } from '@angular/router';

@Injectable()
export class CustomRouteReuseStrategy implements RouteReuseStrategy {

  shouldDetach(route: ActivatedRouteSnapshot): boolean {
    // Return `false` to prevent this route from being stored.
    return false;
  }

  store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {}

  shouldAttach(route: ActivatedRouteSnapshot): boolean {
    return false;
  }

  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
    return null;
  }

  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    return false;
  }
}</code>

Zur Verwendung Diese benutzerdefinierte Strategie zur Routenwiederverwendung können Sie wie folgt in Ihrem NgModule bereitstellen:

<code class="typescript">import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { AppComponent } from './app.component';
import { CustomRouteReuseStrategy } from './custom-route-reuse-strategy';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    RouterModule.forRoot([
      { path: '', component: AppComponent }
    ], { useHash: true })
  ],
  providers: [
    { provide: RouteReuseStrategy, useClass: CustomRouteReuseStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}</code>

Jetzt wird die Methode ShouldDetach Ihrer benutzerdefinierten Strategie zur Routenwiederverwendung immer dann aufgerufen, wenn der Benutzer eine Route verlässt. Mit dieser Methode können Sie bestimmen, ob die Route gespeichert werden soll oder nicht.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass bestimmte Routen mithilfe der ShouldDetach-Methode von RouteReuseStrategy in Angular 2 gespeichert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn