Most of the current replies are optimal, but for cleaner code I would recomend the use of window instead of an injected reference of document as it is nothing less than a duplicate reference of the window itself. Only case where it better to use is when you cannot directly use the window.
const url : string = "https://stackoverflow.com/questions/34338440/how-to-redirect-to-an-external-url-in-angular2"
window.open(url, "_blank")
//window.open(url, "_self")
//window.open(url, "_parent")
//window.open(url, "_top")
This code will open a window whose second parameter which is the target atribute that will decide where the URL will be opened.
The specific target atribute values are these: (mozilla)
_self: the current browsing context. (Default)
_blank: usually a new tab, but users can configure browsers to open a new window instead.
_parent: the parent browsing context of the current one. If no parent, behaves as _self.
_top: the topmost browsing context (the "highest" context that's an ancestor of the current one). If no ancestors, behaves as _self.
With this you can have a bit cleaner solution on where the new URL should be opened for the best experience of the end user
In any case you can replace router.navigate with
window.open("relativePathFromCurentURL","_self")
to navigate through your website. I can only recomend you this usage for cases where you do not want to import routing to some components.