2017-02-06 11 views
3

私はルートガード(CanActivateインターフェイス)を実装しています。特定の条件下で、見つからないページにリダイレクトする必要があります。これは、次の文で達成することができます:角度2ユニバーサル404が見つかりませんリダイレクト

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

これは動作しますが、(エラー:それらが送られた後、ヘッダーを設定することはできません)例外サーバ側を上昇させ、まだangular2、ユニバーサル理由リダイレクションに関係なくレンダリングされたページを送信します。

これを正しく解決する方法はありますか?

ありがとうございます。

+0

リダイレクトを呼び出す前に、何か出力するコードはありますか? –

+0

ソリューションを見つけましたか? –

答えて

0

実際には、エラーを回避するためのソリューションがあります。

res.renderメソッドのserver.tsでは、コールバック関数を追加し、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がfalseの場合のみ、HTMLを送信します。

関連する問題