import 'angular2-universal/polyfills'; import { FormBuilder } from 'angular2/common'; import * as ngCore from 'angular2/core'; import * as ngRouter from 'angular2/router'; import * as ngUniversal from 'angular2-universal'; import { BASE_URL, ORIGIN_URL, REQUEST_URL } from 'angular2-universal/common'; import { App } from './components/app/app'; export default function (params: any): Promise<{ html: string, globals?: any }> { const serverBindings = [ ngCore.provide(BASE_URL, { useValue: '/' }), ngCore.provide(ORIGIN_URL, { useValue: params.origin }), ngCore.provide(REQUEST_URL, { useValue: params.url }), ngUniversal.NODE_HTTP_PROVIDERS, ngUniversal.NODE_ROUTER_PROVIDERS, FormBuilder ]; return ngUniversal.bootloader({ directives: [App], providers: serverBindings, async: true, preboot: false, // TODO: Render just the component instead of wrapping it inside an extra HTML document // Waiting on https://github.com/angular/universal/issues/347 template: '\n' }).serializeApplication().then(html => { return { html }; }); }