我不能将文档注入与angular universal一起使用
我尝试使用DOM的document属性删除类并将其添加到html中,并管理一些CSS属性,但当我执行我不能将文档注入与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
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);
});
}
}
应用程序模块
应用程序版本:
请尝试改用
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);