Angular 2 Universal 404 Not Found重定向

时间:2017-02-06 12:00:42

标签: angular2-universal

我正在实施一个路由保护(CanActivate接口),我需要在某些条件下重定向到未找到的页面。这可以通过以下句子实现:

if (isNode){
let res : Response = Zone.current.get('res');
res.status(404).redirect('/not-found');
}else{
this.router.navigate(['not-found']);
}

这样可行,但会引发异常服务器端(错误:发送后无法设置标头),因为无论重定向如何,angular2-universal仍会发送呈现的页面。

有没有办法妥善解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

实际上有一种绕过错误的解决方案。

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);
      }
    });
});

显然,仅当res.headersSent为假时才发送html。

相关问题