Die nav
Eigenschaft meiner create-team
Route wird durch eine beobachtbare Eigenschaft in meinem userService
festgelegt. Ich habe jedoch ein Problem. Es gibt keine Möglichkeit, das Array router.navigation
zu aktualisieren, um anzuzeigen, dass sich meine Eigenschaft isTeamMember
geändert hat. Auch wenn meine isTeamMember
-Eigenschaft "true" zurückgibt, wird die Route nicht ausgeblendet, es sei denn, ich führe eine vollständige Seitenaktualisierung durch.Aurelia-Router router.navigation wird nicht aktualisiert, wenn eine Route-Eigenschaft aktualisiert wird
Ich versuchte mit router.refreshNavigation()
und es hat nicht funktioniert, da von dem, was ich verstehe, nur Routen, die auf nav: true
festgelegt sind, werden dem router.navigation
Array hinzugefügt.
Ich bin derzeit durch router.navigation
Array durchlaufen, um mein Menü für meine App anzuzeigen. Aber wenn der Benutzer ein Team erstellt, möchte ich diese Route aus dem Menü ausblenden, da der Benutzer jetzt ein Teambesitzer ist. Ich handhabe den Zugang zu dieser Route mit einer , die funktioniert, aber diese Route auch dynamisch verbergen möchte.
app.ts
configureRouter(config: RouterConfiguration, router: Router){
...
var appRoutes = [
{ route: '/create-team', name:'create-team', moduleId: 'routes/create-team', nav: !this.userService.isTeamMember, title: 'menu.create-team', settings: { auth: { isNotTeamMember: true } } },
]
...
}
Gibt es eine saubere Art und Weise die route.navigation
Array so mein Menü aktualisiert auffrischen wird, ohne eine vollständige Aktualisierung der Seite zu tun zu haben?
Nach https://github.com/aurelia/router/issues/216 Sie müssen wahrscheinlich ** manuell ** Kesselflicker mit dem 'router.navigation' Array und Hinzufügen/Entfernen Sie das Element wollen. So etwas wie 'let index = this.router.navigation.findIndex (r => r.name == 'name-you-will-to-remove'); this.router.navigation.splice (index, 1);' –
@ GabyakaG.Petrioli Ich wünschte, ich könnte das vermeiden. Mal sehen, ob es eine andere Lösung gibt, aber danke für die Eingabe! – maximedubois
Das Problem ist, dass '! This.userService.isTeamMember' eine Eigenschaft auswertet. Sie binden nicht an diese Eigenschaft, sondern bewerten sie nur beim Erstellen der Route. Sie wird nicht automatisch geändert, wenn sich der Wert dieser Eigenschaft ändert. Ich mag die von 'zedL' vorgeschlagene Lösung. Es gibt einige andere Möglichkeiten, aber die gegebene ist nicht schlecht. –