我不能将文档注入与angular universal一起使用

我不能将文档注入与angular universal一起使用,angular,typescript,dom,angular-universal,angular11,Angular,Typescript,Dom,Angular Universal,Angular11,我尝试使用DOM的document属性删除类并将其添加到html中,并管理一些CSS属性,但当我执行ng run app:serve ssr命令时,我遇到以下问题: 这是我的代码,它是一个名为app initializer的提供者中的服务,这是提供者,这是它在AppModule中导入的方式 @Injectable({ providedIn: 'root', }) export class ThemeService { constructor(@Inject(DOCUMENT) priva

我尝试使用DOM的document属性删除类并将其添加到html中,并管理一些CSS属性,但当我执行
ng run app:serve ssr
命令时,我遇到以下问题:

这是我的代码,它是一个名为app initializer的提供者中的服务,这是提供者,这是它在AppModule中导入的方式

@Injectable({
  providedIn: 'root',
})
export class ThemeService {
 constructor(@Inject(DOCUMENT) private document: Document) {}

 private loadCss(href: string, id: string): Promise<Event> {
    return new Promise((resolve, reject) => {
      const style = this.document.createElement('link');
      style.rel = 'stylesheet';
      style.href = href;
      style.id = id;
      style.onload = resolve;
      style.onerror = reject;
      this.document.head.append(style);
    });
  }
}
应用程序模块

应用程序版本:

  • 角度CLI:11.2.7
  • 节点:14.16.0
  • 角度:11.2.8
  • 在Google Chrome和Microsoft Edge中测试

  • 请尝试改用
    appendChild
    ,服务器端DOM可能不支持
    append

    this.document.head.appendChild(style);
    
    您还可以使用
    Renderer2
    ,从角度操作DOM元素时建议使用该方法

    this.renderer.appendChild(this.document.head, style);
    
    @Inject(DOCUMENT)private DOCUMENT:DOCUMENT
    出于某种原因(不要问我)
    DOCUMENT
    应该是
    any
    类型,所以
    @Inject(DOCUMENT)private DOCUMENT:any
    this.document.head.appendChild(style);
    
    this.renderer.appendChild(this.document.head, style);