NavigationExtras
Параметры, изменяющие стратегию навигации Router. Передайте объект с любыми из этих свойств функции навигации Router, чтобы управлять построением или интерпретацией целевого URL.
API
interface NavigationExtras extends UrlCreationOptions, NavigationBehaviorOptions {
override relativeTo?: ActivatedRoute | null | undefined;
override queryParams?: Params | null | undefined;
override fragment?: string | undefined;
override queryParamsHandling?: QueryParamsHandling | null | undefined;
override preserveFragment?: boolean | undefined;
override onSameUrlNavigation?: OnSameUrlNavigation | undefined;
override skipLocationChange?: boolean | undefined;
override replaceUrl?: boolean | undefined;
override state?: { [k: string]: any; } | undefined;
readonly override info?: unknown;
readonly override browserUrl?: string | UrlTree | undefined;
readonly override scroll?: "manual" | "after-transition" | undefined;
}
relativeTo
ActivatedRoute | null | undefinedЗадает корневой URI, используемый для относительной навигации.
Например, рассмотрим следующую конфигурацию маршрутов, в которой у родительского маршрута есть два дочерних маршрута.
[{
path: 'parent',
component: ParentComponent,
children: [{
path: 'list',
component: ListComponent
},{
path: 'child',
component: ChildComponent
}]
}]
Следующая функция go() выполняет навигацию к маршруту list, интерпретируя URI назначения как относительный к активированному маршруту child
@Component({...})
class ChildComponent {
constructor(private router: Router, private route: ActivatedRoute) {}
go() {
router.navigate(['../list'], { relativeTo: this.route });
}
}
Значение null или undefined указывает, что команды навигации следует применять относительно корня.
queryParams
Params | null | undefinedЗадает параметры запроса для URL.
// Navigate to /results?page=1
router.navigate(['/results'], { queryParams: { page: 1 } });
fragment
string | undefinedЗадает фрагмент хеша для URL.
// Navigate to /results#top
router.navigate(['/results'], { fragment: 'top' });
queryParamsHandling
QueryParamsHandling | null | undefinedСпособ обработки параметров запроса в ссылке маршрутизатора при следующей навигации. Возможны варианты:
-
preserve: Сохранить текущие параметры. -
merge: Объединить новые параметры с текущими.
Вариант "preserve" отбрасывает все новые параметры запроса:
// from /view1?page=1 to/view2?page=1
router.navigate(['/view2'], { queryParams: { page: 2 }, queryParamsHandling: "preserve"
});
Вариант "merge" добавляет новые параметры запроса к параметрам из текущего URL:
// from /view1?page=1 to/view2?page=1&otherKey=2
router.navigate(['/view2'], { queryParams: { otherKey: 2 }, queryParamsHandling: "merge"
});
При совпадении ключа среди текущих параметров и параметров объекта queryParams используется новое значение.
preserveFragment
boolean | undefinedЕсли значение равно true, фрагмент URL сохраняется при следующей навигации
// Preserve fragment from /results#top to /view#top
router.navigate(['/view'], { preserveFragment: true });
skipLocationChange
boolean | undefinedЕсли значение равно true, навигация выполняется без добавления нового состояния в историю.
// Navigate silently to /view
this.router.navigate(['/view'], { skipLocationChange: true });
replaceUrl
boolean | undefinedЕсли значение равно true, навигация выполняется с заменой текущего состояния в истории.
// Navigate to /view
this.router.navigate(['/view'], { replaceUrl: true });
state
{ [k: string]: any; } | undefinedОпределяемое разработчиком состояние, которое можно передать при любой навигации. Получить это значение можно через объект Navigation.extras, возвращаемый методом Router.currentNavigation() method во время выполнения навигации.
После завершения навигации маршрутизатор записывает в history.state объект, содержащий это значение вместе с navigationId. Значение записывается, если перед активацией этого маршрута вызывается location.go() или location.replaceState().
Обратите внимание, что history.state не проходит проверку на равенство объектов, поскольку маршрутизатор добавляет navigationId при каждой навигации.
info
unknownИспользуйте это свойство, чтобы передать временную информацию о конкретной навигации, например о том, как она была выполнена. В этом оно отличается от сохраняемого значения state, которое будет записано в history.state. Этот объект напрямую присваивается текущему Navigation маршрутизатора (он не копируется и не клонируется), поэтому изменять его следует с осторожностью.
Например, это свойство можно использовать для запуска разных анимаций навигации в одностраничном приложении в зависимости от того, как был достигнут определенный маршрут. Рассмотрим приложение-галерею фотографий, в котором можно открыть один и тот же URL и состояние фотографии разными способами:
- Нажать на фотографию в галерее
- Нажать
- «следующая» или «предыдущая» при просмотре другой фотографии в альбоме
- И так далее.
Для каждого из этих способов при навигации нужна своя анимация. Эту информацию нет смысла сохранять в постоянном URL или состоянии записи истории, но ее важно передать из остальной части приложения в маршрутизатор.
Эту информацию можно использовать совместно с функцией View Transitions и обратным вызовом onViewTransitionCreated. В обратном вызове она может использоваться для добавления классов к документу, чтобы управлять анимацией переходов, и для удаления этих классов после завершения анимации.
browserUrl
string | UrlTree | undefinedЕсли задано это свойство, маршрутизатор обновит адресную строку браузера, используя указанный UrlTree вместо URL, используемого для сопоставления маршрута.
scroll
"manual" | "after-transition" | undefinedНастраивает обработку прокрутки для отдельной навигации, если в маршрутизаторе включено восстановление прокрутки.
- При значении 'manual' маршрутизатор не будет выполнять прокрутку после завершения навигации, даже если восстановление прокрутки включено.
- При значении 'after-transition' прокрутка будет выполняться после события
NavigationEndв соответствии с поведением, настроенным для функции прокрутки маршрутизатора.
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/router/NavigationExtras