这是因为Angular会在URL中检测到该参数并尝试将其解析为路由参数,从而导致应用程序崩溃。解决此问题的一个方法是使用queryParams
代替params
来处理URL参数。
在路由中定义组件时,使用以下代码来获取URL参数:
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) { }
ngOnInit() {
const code = this.route.snapshot.queryParams['code'];
const state = this.route.snapshot.queryParams['state'];
// do something with code and state
}
这样可以避免将code
和state
参数解析为路由参数,同时保留URL中的code
和state
参数。
如果需要在URL中使用params
参数,可以使用一些技巧来避免与路由参数冲突:
import { Router } from '@angular/router';
constructor(private router: Router) { }
submitForm() {
const code = 'abc';
const state = 'xyz';
this.router.navigate(['/my-route'], {
queryParams: { code, state },
queryParamsHandling: 'merge'
});
}
在这种情况下,queryParamsHandling: 'merge'
选项将在保留现有params
参数的同时合并URL参数,从而避免任何冲突。