问题
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?
回答1:
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');
}
}
来源:https://stackoverflow.com/questions/48346873/how-to-add-class-to-body-in-angular-universal