Angular 2 - Как перейти к другому маршруту, используя this.router.parent.navigate('/about')
.
Это не похоже на работу. Я пытался location.go("/about");
как то не сработало.
В основном, как только пользователь вошел в систему, я хочу перенаправить его на другую страницу.
Вот мой код ниже:
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('Mark@gmail.com', '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
источник
источник
/
в своих путях, как это не требуетсяОтветы:
Абсолютная маршрутизация
Есть 2 метода для навигации,
.navigate()
и.navigateByUrl()
Вы можете использовать метод
.navigateByUrl()
для маршрутизации по абсолютному пути:Вы указываете абсолютный путь к URL-адресу компонента, к которому хотите перейти.
Примечание. Всегда указывайте полный абсолютный путь при вызове
navigateByUrl
метода маршрутизатора . Абсолютные пути должны начинаться с ведущего/
Относительная маршрутизация
Если вы хотите использовать относительную маршрутизацию, используйте
.navigate()
метод.ПРИМЕЧАНИЕ: немного не интуитивно понятно, как работает маршрутизация, особенно родительские, родственные и дочерние маршруты:
Или, если вам просто нужно перейти в пределах текущего пути маршрута, но к другому параметру маршрута:
Массив параметров ссылки
Массив параметров ссылки содержит следующие компоненты для навигации маршрутизатора:
['/hero']
['/hero', hero.id]
или['/hero', { id: hero.id, foo: baa }]
Каталогоподобный синтаксис
Маршрутизатор поддерживает похожий на каталог синтаксис в списке параметров ссылки, чтобы помочь при поиске имени маршрута:
./
или нет косой черты относительно текущего уровня.../
чтобы подняться на один уровень в пути маршрута.Вы можете комбинировать относительный синтаксис навигации с путем предка. Если вам нужно перейти к маршруту родного брата, вы можете воспользоваться
../<sibling>
соглашением, чтобы подняться на один уровень вверх, а затем снова и снова по пути родного брата.Важные заметки об относительной наговации
Для навигации по относительному пути с помощью
Router.navigate
метода необходимо указать,ActivatedRoute
чтобы маршрутизатор знал, где вы находитесь в текущем дереве маршрутов.После массива параметров ссылки добавьте объект со
relativeTo
свойством, установленным вActivatedRoute
. Затем маршрутизатор вычисляет целевой URL на основе местоположения активного маршрута.Из официальной документации Angular Router
источник
{ path: 'home', component: Home, children: homeRoutes }
тогда вы хотите предоставить это методу роутера:this.router.navigate(['home/address-search'])
ИЛИthis.router.navigateByUrl(/'home/address-search')
this.router= Router;
может сбить с толку некоторых читателей, в данном случае это упоминание о внедрении зависимостей в Router, которое я должен сделать с помощью этого кодаconstructor( private router: Router )
Вы должны использовать
Помимо указания маршрута, вы также можете указать название вашего маршрута:
источник
this._router.navigate(['/some-route']);
Также можно использовать без
parent
скажем определение роутера вроде:
затем можно перемещаться
name
вместоpath
Обновлено для V2.3.0
В Routing из v2.0 имя свойства больше не существует. маршрут определяют без имени свойства. поэтому вы должны использовать путь вместо имени .
this.router.navigate(['/path'])
и нет косой черты для пути, так что используйтеpath: 'about'
вместоpath: '/about'
определение маршрутизатора как:
затем можно перемещаться по
path
источник
name
не рекомендуется для типа Route в Angular 2.0.v2.3.0
data
name
источник
Лично я обнаружил, что, поскольку мы поддерживаем
ngRoutes
коллекцию (длинную историю), я нахожу наибольшее удовольствие от:Я фактически использую это как часть одного из наших вопросов интервью. Таким образом, я могу почти мгновенно прочитать, кто развивается вечно, наблюдая за тем, кто дергается, когда они сталкиваются с
GOTO(1)
перенаправлением на домашнюю страницу.источник