router.navigate(url) 不加载组件,但直接在浏览器中输入 url

Posted

技术标签:

【中文标题】router.navigate(url) 不加载组件,但直接在浏览器中输入 url【英文标题】:router.navigate(url) doesn't load the component but typing the url directly into the browser does 【发布时间】:2020-12-14 22:25:45 【问题描述】:

我正在尝试通过单击这样的 div 来加载 Angular 8 组件:

  showMovie(movieId) 
    this.router.navigate([`/movie/$movieId`]);
  

这曾经有效,在我在netlify 上部署的版本中它仍然有效,但是当我尝试从localhost 执行此操作时,它不再有效。如果我直接在浏览器中输入网址,它就可以正常工作。

【问题讨论】:

控制台有错误吗? 是的,一堆。它们中的大多数与角度 html 无法正确加载的数据有关。但这似乎不是问题,因为即使我清空 html 所以它不需要该数据,它也不会加载。控制台中似乎有趣的一件事是:null:1 GET localhost:4200/null 404 (Not Found)。 即使我直接在浏览器中输入 url 并且一切都完美加载,也会显示此错误。 你能直接分享你输入的url吗,很明显它可能是个假人。链接的组件是否在延迟加载的模块中? 像这样尝试一次this.router.navigate(['/movie'+movieId])。还要检查你在方法中得到正确的movieId 【参考方案1】:

尝试使用这段代码,使用queryParams,我不确定语法:

this.router.navigate(['/movie'], queryParams: movieId: movieId )

【讨论】:

【参考方案2】:

你可以试试这个:- 首先导入路由器

import  ActivatedRoute, Router  from '@angular/router';

在构造函数中声明路由器:

private router: Router,

那么,

this.router.navigate(['/movie', movieId]);

谢谢你

【讨论】:

以上是关于router.navigate(url) 不加载组件,但直接在浏览器中输入 url的主要内容,如果未能解决你的问题,请参考以下文章

Backbone.history.navigate和this.router.navigate之间有什么区别

如何在 Angular 2 中重新加载相同 URL 的组件?

向 Angular router.navigate 添加参数

Angular router.navigate w/ route guard 在组件上时不起作用

角度 2 router.navigate 未定义

为啥 routerLink 和 router.navigate() 行为不同?