We can user Rendered2
in browser version of Angular app but it requires document.body
reference and it's not available on server rendering.
platform-browser
has Title
and Meta
components but I would like to have more control over <head>
section, like injecting <script>
tags, accessing body
element, etc.
Is there a way to do it?
Actually, Angular Universal uses DOMINO library under the hood, which creates document
in the same way as browser does. The only difference is that you have to inject DOCUMENT
like this:
import { DOCUMENT } from '@angular/common';
import { Component, Inject, Renderer2 } from '@angular/core';
@Component({ ... })
export class AppComponent {
constructor(@Inject(DOCUMENT) document, r: Renderer2) {
r.addClass(document.body, 'myclass');
}
}