How to add class to <body> in Angular Univer

2020-07-20 03:00发布

问题:

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');
    }
}