So lösen Sie den Routen-Resolver manuell aus

10

Ich löse einen Benutzer auf, bevor ich auf das Kontofragment meiner Benutzerseite zugreife:

app-routing.component.ts

%Vor%

users.service.ts

%Vor%

benutzeraccount.component.ts

%Vor%

In der Benutzerkonto-Komponente kann ich das Formular speichern oder zurücksetzen. In beiden Fällen möchte ich den Benutzer der Komponente aktualisieren und das Formular und die Validatoren zurücksetzen. Idealerweise möchte das Abonnement erneut ausgelöst werden.

Irgendeine Idee, wie man den Resolver manuell auslöst?

(Ich habe immer wieder die selbe Route modulo als Zufallszahl als letztes Fragment benutzt, aber da ich meine Benutzerseite in Eltern- / Kinderrouten aufgelöst habe, wird der Resolver innerhalb des Elternteils nicht mehr beim letzten aufgerufen Fragmentänderungen)

    
Max 23.01.2017, 11:04
quelle

2 Antworten

0

Normalerweise möchten Sie einen Routen-Resolver nicht manuell auslösen.

Da Ihr Resolver Teil Ihres Dienstes ist und er nur this.getUser (id) aufruft, können Sie ihn nach einer Änderung leicht aufrufen.

In diesem Szenario würde ich meinen Dienst in meine Klasse einfügen und dann nach der Aktion, die den Benutzer aktualisiert, den Befehl this.getUser (id) aufrufen.

Mögliche Implementierung

%Vor%

Hinweis: Ich verwende Code, der von rxjs 5.5 abhängig ist Außerdem muss Ihr Dienst in Ihren Providern enthalten sein, damit dies funktioniert.

    
Woot 07.02.2018 19:12
quelle
0

Ich stimme "Woot" zu, aber wenn Sie den Resolver erneut auslösen möchten, gehen Sie zu Ihrem Routing-Modul und fügen Sie

hinzu %Vor%

Jetzt können Sie erneut auf derselben Seite navigieren und der Resolver wird erneut ausgeführt. Aber beachten Sie, dass nur der Resolver erneut ausgeführt wird, kein anderes Lifecyle, wie " ngOnInit ".

Beispiel nach Ihnen Code

app-routing.component.ts

%Vor%

Wenn Sie nun erneut auf dieselbe Seite verzweigen, wird das Abonnement auf Ihrer benutzerkonto.component.ts erneut ausgelöst

    
Murolack 29.03.2018 23:06
quelle