angular – 手动更改路由参数会导致用户界面不一致
这是一个可以玩的玩家:
https://plnkr.co/edit/qTjftING3Hk2fwN36bQa?p=preview 一切都运行良好,除非您手动更改网址栏中的id参数,因为项目下拉列表不会将新projectId显示为当前项目.当用户将网址保存为收藏链接并将其复制/粘贴到网址栏时,会发生这种情况!我会说一个常见的情况! 为了解决这个问题,我可以在TestsListComponent中监听route.params更改,并在该下拉列表中添加一个带有sharedService / EventEmitter的检查. TestsListComponent中的bool返回值existsProjectId决定我应该重定向到/ projects页面,因为id不存在. 但老实说,至少从用户体验的角度来看,从TestsListComponent重定向太晚了,因为路由项目/:id / tests已经被激活. 你会如何解决这种不端行为? 附: >也许有一种全局参数更改我可以听,并检查ProjectsListComponent中的路径及其ID,这将有所帮助! >加载plunkr并激活窗口模式 解决方法
我不确定我是否正确理解你的问题,无论如何这里是我的
plunkr.
this.router.events.subscribe(event => { if (event instanceof RoutesRecognized) { var first=event.state.root.firstChild.firstChild; var id = first && event.state.root.firstChild.firstChild.params['id']; console.debug('recognized',id); this.currentProject = this.projects[+id-1]; console.log(this.currentProject); } }); 只需导航到#/ projects / 1 / tests. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |