queryParams 和 params 都是angular里面的旧属性。据官网描述,虽然现在仍然可以使用,但可能以后就会被弃用掉,所以建议使用相对应的新的属性名称
Two older properties are still available, however, their replacements are preferable as they may be deprecated in a future Angular version.
params: An Observable that contains the required and optional parameters specific to the route. Use paramMap instead.
queryParams: An Observable that contains the query parameters available to all routes. Use queryParamMap instead.
那 queryParamMap 和 paramMap有什么区别呢?
简单来讲, queryParamMap获取的是activatedRoute 路由中?后面的参数, 比如: user/:id 这里的id;而paramMap获取的是路由配置中占位符所代表的参数, 比如:user/:id?tab=edit 这里的tab。
当然, queryParamMap还能获取NavigationExtras里面设置的参数, 比如:
// Set our navigation extras object
// that contains our global query params and fragment
let navigationExtras: NavigationExtras = {
queryParams: { 'session_id': sessionId },
fragment: 'anchor'
};
this.router.navigate(['/login'], navigationExtras);