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

时间:2018-02-28 05:00:59

标签: javascript angular

我正在查看的组件(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。如果有人知道文档的位置,我想了解更多信息。

1 个答案:

答案 0 :(得分:2)

您可以在source中找到:

  

文档可能在应用程序上下文中不可用   应用程序和渲染上下文不一样(例如在运行时)   应用程序到Web Worker)。

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