我们为什么要麻烦使用import { DOCUMENT } from '@angular/common'
?
即使没有它,我也可以访问文档模块
document.getElementById('TestID).focus()
我看到的与导入唯一的区别是将其附加到this
关键字上。
this._document.getElementById('TestID').focus();
从Angular的通用模块中导入DOCUMENT是否有真正的好处?
我做了一些研究,但是看不到任何信息。
答案 0 :(得分:0)
我的理解是,DOCUMENT代表主要的渲染上下文,无论平台是“浏览器”还是“服务器”,您都可以访问文档。
从document.getElementByID,您只能访问DOM文档。
请参阅“ Angular Document”。
答案 1 :(得分:0)
DOCUMENT
在例如Web Worker中可能不可用。例如,您可以使用
@Optional() @Inject(DOCUMENT) document
检查它是否为undefined
并分支您的代码。
但是,您可以再次检查window.document
。
答案 2 :(得分:0)
在我们的用例中,我们注入DOCUMENT
而不直接使用它的最重要原因是用于服务器端渲染。如果您在诸如document.xxx
/ ngOnInit
之类的任何常规生命周期挂钩中直接调用ngAfterViewInit
,则在 SSR 期间,您很可能会遇到document not defined
错误。使用DI注入可以避免这种情况。