我具有延迟加载的基本父/子路由配置。
/ (root)
-> myprofile
-> edit
但是,为edit
路由加载的组件依赖于state
从内部角度路由器传递,因为它将从中来回传递信息。
如果用户将以/myprofile/edit
刷新,这将导致某些不良行为,因为不存在路由器状态。
现在,我检查状态,并在初始化后使用router.navigate()
返回/myprofile
中的edit.component
页面,但是我不认为这是最有角度的方法去解决这个问题。
是否有一种方法可以围绕只能通过Angular Router访问的路由建立防护?
答案 0 :(得分:0)
当用户刷新Angular路由时,Web服务器会响应并提供index.html
服务,然后Angular接管,读取URL并使用History JavaScript API推送相应的状态。
您可以通过在防护装置中测试state
是否存在来实现自己的逻辑。在Angular中,没有内置功能可以知道导航是否是第一个导航,因此,如果您不想实施防护,最好的解决方案是配置Web服务器(Apache,Nginx或您所需要的任何东西)使用)在收到Location: /myprofile
请求时发送302 /myprofile/edit
。