Winkel 2 - So navigieren Sie mit zu einer anderen Route this.router.parent.navigate('/about')
.
Es scheint nicht zu funktionieren. Ich habe es versucht, location.go("/about");
da das nicht funktioniert hat.
Grundsätzlich möchte ich einen angemeldeten Benutzer auf eine andere Seite umleiten.
Hier ist mein Code unten:
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
quelle
quelle
/
in Ihren Pfaden entfernen, da es nicht erforderlich istAntworten:
Absolutes Pfad-Routing
Es gibt 2 Methoden zur Navigation:
.navigate()
und.navigateByUrl()
Sie können die Methode
.navigateByUrl()
für das absolute Pfadrouting verwenden:Sie geben den absoluten Pfad zur URL der Komponente an, zu der Sie navigieren möchten.
Hinweis: Geben Sie beim Aufrufen der Routermethode immer den vollständigen absoluten Pfad an
navigateByUrl
. Absolute Pfade müssen mit einem führenden beginnen/
Relative Pfadweiterleitung
Wenn Sie das relative Pfadrouting verwenden möchten, verwenden Sie die
.navigate()
Methode.HINWEIS: Es ist etwas unintuitiv, wie das Routing funktioniert, insbesondere die Routen für Eltern, Geschwister und Kinder:
Oder wenn Sie nur innerhalb des aktuellen Routenpfads navigieren müssen, aber zu einem anderen Routenparameter:
Link Parameter Array
Ein Link-Parameter-Array enthält die folgenden Bestandteile für die Routernavigation:
['/hero']
['/hero', hero.id]
oder['/hero', { id: hero.id, foo: baa }]
Verzeichnisähnliche Syntax
Der Router unterstützt die verzeichnisähnliche Syntax in einer Linkparameterliste, um die Suche nach Routennamen zu erleichtern:
./
oder kein führender Schrägstrich ist relativ zum aktuellen Pegel.../
im Routenpfad eine Ebene höher gehen.Sie können die relative Navigationssyntax mit einem Vorfahrenpfad kombinieren. Wenn Sie zu einer Geschwisterroute navigieren müssen, können Sie die
../<sibling>
Konvention verwenden, um eine Ebene höher und dann über den Pfad der Geschwisterroute zu gehen.Wichtige Hinweise zur relativen Nagivierung
Um mit der
Router.navigate
Methode durch einen relativen Pfad zu navigieren , müssen SieActivatedRoute
das angeben, um dem Router mitzuteilen, wo Sie sich im aktuellen Routenbaum befinden.Fügen Sie nach dem Linkparameter-Array ein Objekt mit einer
relativeTo
Eigenschaft hinzu, die auf das festgelegt istActivatedRoute
. Der Router berechnet dann die Ziel-URL basierend auf dem Standort der aktiven Route.Aus der offiziellen Angular Router-Dokumentation
quelle
{ path: 'home', component: Home, children: homeRoutes }
Dann möchten Sie dies der Routermethode zur Verfügung stellen:this.router.navigate(['home/address-search'])
ODERthis.router.navigateByUrl(/'home/address-search')
this.router= Router;
dass einige Leser verwirren können, in diesem Fall ist eine Erwähnung einer Abhängigkeitsinjektion von Router, die ich stattdessen mit diesem Code machen sollteconstructor( private router: Router )
Du solltest benutzen
Sie können nicht nur den Routenpfad angeben, sondern auch den Namen Ihrer Route angeben:
quelle
this._router.navigate(['/some-route']);
Kann auch ohne verwenden
parent
Sagen Sie Router-Definition wie:
kann dann vorbei navigieren
name
stattpath
Aktualisiert für V2.3.0
Im Routing von v2.0 ist die Eigenschaft name nicht mehr vorhanden. Route zu definieren , ohne Name - Eigenschaft. Sie sollten also Pfad anstelle von Name verwenden .
this.router.navigate(['/path'])
und kein führender Schrägstrich für Pfad, also verwenden Siepath: 'about'
stattpath: '/about'
Router Definition wie:
kann dann vorbei navigieren
path
quelle
name
ist für den Routentyp in Angular 2.0 veraltet.v2.3.0
derdata
soll statt verwendet werdenname
. Für weitere Details -> angle.io/docs/ts/latest/guide/router.htmlquelle
Persönlich fand ich, dass ich, da wir eine
ngRoutes
Sammlung pflegen (lange Geschichte), am meisten Freude daran habe:Ich benutze es tatsächlich als Teil einer unserer Interviewfragen. Auf diese Weise kann ich fast sofort nachlesen, wer sich für immer entwickelt hat, indem ich beobachte, wer zuckt, wenn er
GOTO(1)
auf die Homepage-Umleitung stößt.quelle