如手册中所述,router.navigate
接受一个三角形,但手工但不够具体上是:角router.navigate()增量
导航基于所提供的命令的数组和一个起动上点。如果没有提供启动路线,则导航是绝对的。
...
在相反navigateByUrl,导航总是需要被施加到当前URL的增量。
它只是应用相对URL或更复杂的东西吗?那么在绝对导航的情况下它指的是什么样的三角洲呢?
如手册中所述,router.navigate
接受一个三角形,但手工但不够具体上是:角router.navigate()增量
导航基于所提供的命令的数组和一个起动上点。如果没有提供启动路线,则导航是绝对的。
...
在相反navigateByUrl,导航总是需要被施加到当前URL的增量。
它只是应用相对URL或更复杂的东西吗?那么在绝对导航的情况下它指的是什么样的三角洲呢?
是否只是采用相对URL或更复杂的东西navigateByUrl?
距离您通过commands
PARAM提供,并考虑到你在extras
(在NavigationExtras object)其他参数传递的内置件相对URL。
例如,您可以使用relativeTo
从活动路线或根路线导航。 您可以为导航到的URL(queryParams
和fragment
以附加形式)设置查询参数或片段,也可以保留当前url中出现的查询参数(queryParamsHandling
)。
等等,所以一般来说,它实际上比通过URL导航更复杂,因为我们动态地构建URL。
在绝对导航的情况下,它指的是什么类型的delta?
它是相同的用于相对和绝对导航 - 增量是一组变化的(commands
)应用到当前路线(相对)或根路径(绝对)到应用程序转移到新的状态(而不是通过navigateByUrl
提供新的URL)。
在简单情况下,如果你这样做this.router.navigate(['/heroes'])
它实际上是不使用navigateByUrl
很大的不同,但考虑到这些例子(见这实际上转换commands
和extras
到最终URL的createUrlTree):
// 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
这样做,但是你可能会用字符串解析/连接/做其他操纵(或者开发自己的工具,与navigate
和createUrlTree
提供的工具相似)。
在相对模式下,增量应用于当前路线。它本身要求使用此代码
/**
* Navigate based on the provided array of commands and a starting point.
* If no starting route is provided, the navigation is absolute.
*
* Returns a promise that:
* - resolves to 'true' when navigation succeeds,
* - resolves to 'false' when navigation fails,
* - is rejected when an error happens.
*
* ### Usage
*
* ```
* router.navigate(['team', 33, 'user', 11], {relativeTo: route});
*
* // Navigate without updating the URL
* router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});
* ```
*
* In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current
* URL.
*/
navigate(commands: any[], extras: NavigationExtras = {skipLocationChange: false}):
Promise<boolean> {
validateCommands(commands);
return this.navigateByUrl(this.createUrlTree(commands, extras), extras);
}
许多例子都包含在源代码 https://github.com/angular/angular/blob/master/packages/router/src/router.ts
问题是*它只是应用相对URL或更复杂的东西?在绝对导航的情况下,它指的是什么样的三角洲呢?现在还不清楚这个三角洲的计算是什么和什么。如果是相对路径,他们可能会说'相对路径'。我不会从官方文档中很容易地得出一些赏金。 – estus
什么是三角洲? 我刚刚在angular docs中找到了'delta'的一个地方,它是RouterLink API Doc页面的一部分:路由器链接指令始终将提供的输入视为对当前url的增量。 >例如,如果当前网址是/ user /(box // aux:team)。 >然后下面的链接Jim将生成link/user /(jim // aux:team)。 请参阅createUrlTree以获取更多信息。 ''' – Hayden