Angular 2 - Jak nawigować do innej trasy za pomocą this.router.parent.navigate('/about')
.
Wydaje się, że to nie działa. Próbowałem, location.go("/about");
ponieważ to nie działało.
Zasadniczo po zalogowaniu się użytkownika chcę przekierować go na inną stronę.
Oto mój kod poniżej:
import {Component} from 'angular2/angular2';
import {CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/angular2';
import {Router} from 'angular2/router';
import {AuthService} from '../../authService';
//Model
class User {
constructor(public email: string, public password: string) {}
}
@Component({
templateUrl:'src/app/components/todo/todo.html',
directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]
})
export class Todo {
model = new User('[email protected]', 'Password');
authService:AuthService;
router: Router;
constructor(_router: Router, _authService: AuthService){
this.authService = _authService;
this.router = _router;
}
onLogin = () => {
this.authService.logUserIn(this.model).then((success) => {
//This is where its broke - below:
this.router.parent.navigate('/about');
});
}
}
angular
typescript
angular2-routing
AngularM
źródło
źródło
/
swoje ścieżki, ponieważ nie jest to wymaganeOdpowiedzi:
Bezwzględne kierowanie ścieżką
Istnieją 2 metody nawigacji
.navigate()
i.navigateByUrl()
Możesz użyć tej metody
.navigateByUrl()
do bezwzględnego routingu ścieżki:Podajesz bezwzględną ścieżkę do adresu URL komponentu, do którego chcesz nawigować.
Uwaga: Zawsze określaj pełną ścieżkę bezwzględną podczas wywoływania
navigateByUrl
metody routera . Ścieżki bezwzględne muszą zaczynać się od wiodącej/
Względne trasy trasy
Jeśli chcesz użyć względnego routingu ścieżki, użyj
.navigate()
metody.UWAGA: To trochę nieintuicyjne, jak działa routing, szczególnie trasy nadrzędne, rodzeństwo i podrzędne:
Lub jeśli potrzebujesz tylko nawigować w obrębie bieżącej ścieżki trasy, ale do innego parametru trasy:
Tablica parametrów łącza
Tablica parametrów łącza zawiera następujące składniki do nawigacji routera:
['/hero']
['/hero', hero.id]
lub['/hero', { id: hero.id, foo: baa }]
Składnia podobna do katalogu
Router obsługuje składnię podobną do katalogu na liście parametrów łącza, aby pomóc w wyszukiwaniu nazw tras:
./
lub żaden początkowy ukośnik nie jest powiązany z bieżącym poziomem.../
aby przejść jeden poziom wyżej na ścieżce trasy.Możesz połączyć względną składnię nawigacji ze ścieżką przodka. Jeśli musisz nawigować do trasy rodzeństwa, możesz skorzystać z
../<sibling>
konwencji, aby przejść o jeden poziom wyżej, a następnie w górę i w dół ścieżki trasy rodzeństwa.Ważne uwagi na temat względnej nagacji
Aby poruszać się po ścieżce względnej za pomocą tej
Router.navigate
metody, musisz podać,ActivatedRoute
aby dać routerowi wiedzę o tym, gdzie jesteś w bieżącym drzewie tras.Po tablicy parametrów łącza dodaj obiekt z
relativeTo
ustawioną właściwością doActivatedRoute
. Router następnie oblicza docelowy adres URL na podstawie lokalizacji aktywnej trasy.Z oficjalnej dokumentacji routera kątowego
źródło
{ path: 'home', component: Home, children: homeRoutes }
to chcesz podać metodę routera:this.router.navigate(['home/address-search'])
LUBthis.router.navigateByUrl(/'home/address-search')
this.router= Router;
może to wprowadzić w błąd niektórych czytelników, w tym przypadku jest wzmianka o wstrzyknięciu zależności routera, który powinienem zrobić przy użyciu tego koduconstructor( private router: Router )
Powinieneś użyć
Oprócz określenia ścieżki trasy możesz także podać nazwę trasy:
źródło
this._router.navigate(['/some-route']);
Można również używać bez
parent
powiedzmy definicję routera jak:
następnie można nawigować przez
name
zamiastpath
Zaktualizowano do wersji 2.3.0
W Routing v2.0 z nazwy własności nie więcej istnieje. trasa zdefiniuj bez właściwości name . więc powinieneś użyć ścieżki zamiast nazwy .
this.router.navigate(['/path'])
i bez początkowego ukośnika dla ścieżki, więc użyjpath: 'about'
zamiastpath: '/about'
definicja routera jak:
następnie może nawigować
path
źródło
name
jest przestarzałe dla typu trasy w Angular 2.0.v2.3.0
data
name
źródło
Osobiście przekonałem się, że odkąd prowadzimy
ngRoutes
kolekcję (długą historię), czerpię największą przyjemność z:Właściwie używam go jako części jednego z pytań podczas rozmowy kwalifikacyjnej. W ten sposób mogę niemal natychmiast przeczytać, kto rozwija się wiecznie, obserwując, kto drga, gdy wpadają
GOTO(1)
na przekierowanie na stronę główną.źródło