我正在查看的组件(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
。如果有人知道文档的位置,我想更多地了解一下。
你可以在source找到:
当应用程序和渲染上下文不相同时(例如,将应用程序运行到Web Worker中时),应用程序上下文中可能没有文档。
如果你在那里运行一些繁重的计算,你可能想要使用web worker。