Angular 2 路由器在 URL 中附加问号

Ami*_*and 5 angular-routing angular

我在 Angular 4 项目中遇到了一个奇怪的问题。我正在尝试通过代码导航到路径(单击按钮)。我正在使用router.navigate()如下方法来完成这项工作——

this._router.navigate(["/employeeDetails", selectedEmployee.EmployeeId]);
Run Code Online (Sandbox Code Playgroud)

哪里selectedEmployee.EmployeeId有数字。导航发生了,但我在 URL 中发现了一个非常奇怪的东西。最初 URL 显示如下—— http://localhost:4200/?employeeDetails/170然后该?符号从 URL 中消失并加载所需的页面。

谁能告诉我为什么该?标志出现在 URL 中。理想情况下,它应该在"/employeeDetails"不刷新页面的情况下加载路由的相应组件。我也尝试了没有/如下所示的代码,但没有帮助。

this._router.navigate(["/employeeDetails", selectedEmployee.EmployeeId]);
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

Dav*_*eas 6

以前的答案都没有给出正确的答案,即使认为其中一些有效!但所有人都打了补丁,而不对我们所拥有的事件的原因采取行动。

溶液是设置类型=“按钮”的按钮元件,因为默认的形式识别该按钮作为类型=“提交”,如果没有指定和触发器的提交操作。

但是谢谢,因为答案的组合帮助我找到了真正的原因!


小智 3

原因可能是缺少action="/formsubmit". 当 Chrome 尝试发送没有 this 的 GET 请求时,它会将 a 附加?到当前 URL。

请尝试执行以下提交操作:

onSubmitAction(event){
    event.preventDefault()
}
Run Code Online (Sandbox Code Playgroud)
  • 这不是 Angular 路由器的问题

希望能帮助到你 :)