If JavaScript is disabled in the browser there is not much you can do, probably server-side rendering is the only option. Server-side rendering is indeed supported by Angular, the sub-project is called
Angular Universal. While it works already, I would wait till Angular 4 before staring using universal in my projects. There is an
ongoing process of incorporating Angular Universal into Angular core, breaking API changes are expected, but the process should become better integrated into Angular API and Angular apps.
The idea is that you will have two entrypoints (i.e. two bootstrap modules) in your application - one for browser, another one - for server-side process. The server-side bootstrap module will override services that are browser-specific. For example, in browser version you may have a service that uses HTTP to fetch data, while the server version will fetch data directly from the database. When user requests your application from the server very first time, it will bootstrap your application on the server, and return generated static HTML page as the response. The page will include links to the application JS bundles. Once bundles are loaded and the browser version of you app is bootstrapped, the page becomes interactive.