8

Klasa RouteConfig, której można użyć do dekoracji komponentu (@RouteConfig) z funkcjami routingu, ma określone definicje tras zdefiniowane dla tego komponentu. Teraz catch ma mieć te definicje tras wstrzykiwane w czasie wykonywania (dynamicznie).Implementacja dynamicznego routingu w Angular2 (maszynopis)

Powód jest następujący: załóżmy, że mam aplikację, w której muszę wyświetlić (UI) i zdefiniować (udekorować) "n" liczbę tras, z których każda odpowiada kontu, dla którego aplikacja jest załadowana, a co za tym idzie, prawom które są powiązane z tym konkretnym kontem. Zatem posiadanie definicji tras zdefiniowanych w dekoratorze @RouteConfig dla komponentu nie ma żadnego sensu.

Moje podejście polega na wykonywaniu zgłoszenia serwisowego za każdym razem, gdy nowe konto jest ładowane. Pobierz tylko powiązane trasy i wstrzyknij je w czasie wykonywania, aby przejść do innych odpowiednich składników odpowiadających każdej trasie wyświetlanej w interfejsie użytkownika dla tego konta.

import { Summary } from './components/summary'; 

@RouteConfig([ 
    /* 
    Let's say we need a seller dashboard to be displayed... 
    */ 
    //{ path: 'SellerDashboard', component: SellerDashboard } 
    { path: '/', component: Summary } 
]) 
class App { 
    contactInfo: ContactInfoModel; 
    public App(dataService: DataService) { 
     this.model = dataService.getContactInfo(); 
    } 
} 

W powyższym fragmencie kodu, powiedzmy, życzę, aby załadować pulpit sprzedający odpowiadającą koncie sprzedającego looged w mojej aplikacji. Teraz wygrało; nie ma sensu wyświetlać pulpitu nawigacyjnego Point of Sales ani niczego, co nie ma związku ze sprzedawcą (w naszym przypadku panel zapasów sprzedawcy jest odpowiedni dla sprzedawcy).

W istocie wstrzykiwanie tylko tych tras, które są wymagane zamiast konfigurowania wszystkich tras w tym samym miejscu.

EDIT 1:

To pytanie ma prostą sprawę użycie lub scenariusz niż dwóch egzemplarzach oznaczonego na tym stanowisku (który został poproszony później). Odpowiedzi wymienione w tym artykule mają prostsze podejście i są również znacznie bardziej intuicyjne.

+0

Można to zrobić, ale nie jest łatwym rozwiązaniem. Spójrz na [ten artykuł] (http://blog.mgechev.com/2015/12/30/angular2-router-dynamic-route-config-definition-creation/), mam nadzieję, że pomoże ... – Sasxa

+0

@Sasxa bardzo dziękuję za pomoc. Próbowałem tego z pewnymi modyfikacjami służącymi moim potrzebom. Świetny artykuł! działa dla mnie jak urok. – darkdefender27

Odpowiedz

6

Sprawdź ten post:

http://blog.mgechev.com/2015/12/30/angular2-router-dynamic-route-config-definition-creation/

Zasadniczo autor tworzy klasę DynamicRouteConfigurator który używa API odzwierciedlać dynamicznie dodać trasy do @RouteConfig dekoratora.

Github Link:

https://github.com/mgechev/dynamic-route-creator/blob/master/app/components/app/app.ts

+0

To służyło mojemu celowi. Dzięki! – darkdefender27

+1

Trasa wydaje się być obecnie przestarzała. Czy istnieje alternatywny sposób robienia tego? – Gary

+0

Spójrz na ten problem: https://github.com/angular/angular/issues/9527 może pomóc – teone