Czy można mieć wiele gniazdek routera w tym samym szablonie?
Jeśli tak, to jak skonfigurować trasy?
Używam angular2 beta.
angular
angular2-routing
angular2-template
Islam Shaheen
źródło
źródło
Odpowiedzi:
tak, możesz, ale musisz użyć routingu aux. będziesz musiał nadać nazwę gniazdu routera:
<router-outlet name="auxPathName"></router-outlet>
i skonfiguruj konfigurację trasy:
@RouteConfig([ {path:'/', name: 'RetularPath', component: OneComponent, useAsDefault: true}, {aux:'/auxRoute', name: 'AuxPath', component: SecondComponent} ])
zobacz ten przykład: http://plnkr.co/edit/JsZbuR?p=preview Również ten film: https://www.youtube.com/watch?v=z1NB-HG0ZH4&feature=youtu.be
Aktualizacja tras RC.5 Aux nieco się zmieniła: w gniazdku routera użyj nazwy:
W konfiguracji routera:
źródło
Możesz mieć wiele gniazdek routera w tym samym szablonie, konfigurując router i podając nazwę gniazdka routera, możesz to osiągnąć w następujący sposób.
Zaletą poniższego podejścia jest to, że dzięki niemu można uniknąć nieprzyjemnie wyglądającego adresu URL. np .: / home (aux: login) itp.
Zakładając, że podczas ładowania ładujesz appComponent.
app.component.html
Dodaj następujące do routera.
Teraz po załadowaniu / home appComponent otrzyma ładunek z przydzielonym szablonem, wtedy router kątowy sprawdzi trasę i załaduje komponent potomny do określonego gniazda routera na podstawie nazwy.
Podobnie jak powyżej, możesz skonfigurować router tak, aby miał wiele gniazd routera na tej samej trasie.
źródło
Składnia tras pomocniczych zmieniła się wraz z nowym routerem RC.3.
Istnieją pewne znane problemy z trasami aux, ale dostępna jest podstawowa obsługa.
Możesz zdefiniować trasy, aby pokazać komponenty w nazwanym
<router-outlet>
Konfiguracja trasy
Nazwane gniazdo routera
Poruszaj się po trasach aux
Wygląda na to, że nawigacja po trasach aux z routerLink nie jest jeszcze obsługiwana
Jeszcze nie próbowałem
Zobacz także
router Angular2 w jednym komponencieRC.5 routerLink DSL (to samo co
createUrlTree
parametr) https://angular.io/docs/ts/latest/api/router/index/Router-class.html#!#createUrlTree-anchorźródło
@Input()
nazwa jest własnościąRouterOutlet
klasy. Muszę sprawdzić składnię ścieżki aux dla routerLink.<a [routerLink]="['/team/3', {outlets: {aux: 'chat'}}]">c</a>
<a [routerLink]="[{ outlets: { list:['streams'], details:['parties'] } }]">Link</a>
`
źródło
Tak, możesz, jak powiedział @tomer powyżej. chcę dodać punkt do odpowiedzi @tomer.
router-outlet
którym chcesz załadować drugi widok trasowania w swoim widoku. (aux routing angular2.)W routingu angular2 znajduje się kilka ważnych punktów.
aby uzyskać więcej informacji, przeczytaj tutaj i tutaj.
import {RouteConfig, AuxRoute} from 'angular2/router'; @RouteConfig([ new AuxRoute({path: '/home', component: HomeCmp}) ]) class MyApp {}
źródło
Wydaje się, że istnieje inny (raczej hackerski) sposób ponownego wykorzystania gniazda routera w jednym szablonie. Ta odpowiedź jest przeznaczona wyłącznie do celów informacyjnych, a zastosowane tutaj techniki prawdopodobnie nie powinny być używane w produkcji.
https://stackblitz.com/edit/router-outlet-twice-with-events
Wylot routera jest owinięty szablonem ng. Szablon jest aktualizowany poprzez nasłuchiwanie zdarzeń routera. Przy każdym zdarzeniu szablon jest zamieniany i ponownie zamieniany z pustym symbolem zastępczym. Bez tej „zamiany” szablon nie byłby aktualizowany.
Zdecydowanie nie jest to jednak zalecane podejście, ponieważ cała zamiana dwóch szablonów wydaje się nieco hakerska.
w kontrolerze:
w szablonie:
źródło
Nie można używać wielu gniazd routera w tym samym szablonie z
ngIf
warunkiem. Ale możesz go użyć w sposób pokazany poniżej:źródło