Ответ 1
Применяется ли только относительный URL-адрес или что-то более сложное?
Это относительный URL-адрес, построенный из частей, которые вы предоставляете с помощью параметров commands
и с учетом дополнительных параметров, которые вы передаете в extras
целях (объект NavigationExtras).
Например, вы можете использовать relativeTo
для перехода от активного маршрута или от корневого маршрута. Вы можете установить параметры запроса или фрагмент для URL-адреса, к queryParams
вы переходите (queryParams
и fragment
в дополнительных queryParams
), или вы можете сохранить параметры запроса, которые присутствуют в текущем URL- queryParamsHandling
(queryParamsHandling
in extras).
И так далее, так что в общем, на самом деле это нечто более сложное, чем просто навигация по URL-адресу, когда мы динамически создаем URL-адрес.
Что это за дельта, в случае абсолютной навигации?
Это то же самое для относительной и абсолютной навигации. Дельта - это набор изменений (commands
) для применения к текущему маршруту (относительный) или к корневому маршруту (абсолютный) для переноса приложения в новое состояние (вместо того, чтобы просто предоставить новое URL через navigateByUrl
).
В простом случае, если вы делаете что-то вроде this.router.navigate(['/heroes'])
это фактически не очень отличается от использования navigateByUrl
, но рассмотрите эти примеры (см. CreateUrlTree, который фактически преобразует commands
и extras
в конечный URL):
// create /team/33/(user/11//right:chat)
router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);
// remove the right secondary node
router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);
Таким образом, даже для абсолютной навигации метод navigate
предоставляет набор дополнительных инструментов для динамической сборки URL-адреса. Вы можете сделать это с помощью navigateByUrl
, но вы, вероятно, будете разбирать/concat/делать другие манипуляции со строками (или разрабатывать собственный инструмент, аналогичный тому, что обеспечивают navigate
и createUrlTree
).