使@Inject(DOCUMENT)可选的目的是什么?

问题描述 投票:0回答:1

我正在查看的组件(angular-svg-round-progress)包含一个服务,其中包含使用DOCUMENT中的@angular/platform-browser的构造函数。

它是这样导入的:

import {DOCUMENT} from '@angular/platform-browser';

构造函数注入注释如下:

constructor(@Optional() @Inject(DOCUMENT) document: any) {
   this.supportsSvg = !!(
   document &&
   document.createElementNS &&
   document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect
);

由于@angular/core将永远可用(我假设),为什么构造函数的作者制作document参数@Optional

这也是我第一次看到构造函数中使用的@Inject(DOCUMENT)@Inject。如果有人知道文档的位置,我想更多地了解一下。

javascript angular
1个回答
2
投票

你可以在source找到:

当应用程序和渲染上下文不相同时(例如,将应用程序运行到Web Worker中时),应用程序上下文中可能没有文档。

如果你在那里运行一些繁重的计算,你可能想要使用web worker。

© www.soinside.com 2019 - 2024. All rights reserved.