Jos*_*ina 5 angular2-universal
我正在实现一个路由保护(CanActivate 接口),我需要在某些条件下重定向到未找到的页面。这可以通过以下语句来实现:
if (isNode){
let res : Response = Zone.current.get('res');
res.status(404).redirect('/not-found');
}else{
this.router.navigate(['not-found']);
}Run Code Online (Sandbox Code Playgroud)
这有效,但会引发异常服务器端(错误:发送后无法设置标头),因为无论重定向如何,angular2-universal 仍会发送呈现的页面。
有什么办法可以正确解决这个问题吗?
提前致谢。
实际上有一个解决方案可以绕过该错误。
在方法server.ts中res.render添加回调函数并检查res.headersSent布尔值。
server.get('*', (req, res) => {
res.render('../public/index.html', {req, res},
(error, html) => {
if(error)
// error handle
if (!res.headersSent) {
res.send(html);
}
});
});
Run Code Online (Sandbox Code Playgroud)
显然,只有当为 false 时才发送 html res.headersSent。
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |