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 添加参数