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