fix(ivy): ensure that the correct document
is available (#33712)
Most of the use of `document` in the framework is within the DI so they just inject the `DOCUMENT` token and are done. Ivy is special because it does not rely upon the DI and must get hold of the document some other way. There are a limited number of places relevant to ivy that currently consume a global document object. The solution is modelled on the `LOCALE_ID` approach, which has `getLocaleId()` and `setLocaleId()` top-level functions for ivy (see `core/src/render3/i18n.ts`). In the rest of Angular (i.e. using DI) the `LOCALE_ID` token has a provider that also calls setLocaleId() to ensure that ivy has the same value. This commit defines `getDocument()` and `setDocument() `top-level functions for ivy. Wherever ivy needs the global `document`, it calls `getDocument()` instead. Each of the platforms (e.g. Browser, Server, WebWorker) have providers for `DOCUMENT`. In each of those providers they also call `setDocument()` accordingly. Fixes #33651 PR Close #33712
This commit is contained in:

committed by
Kara Erickson

parent
c303371b26
commit
e511bfcab5
@ -26,6 +26,9 @@
|
||||
{
|
||||
"name": "DECLARATION_VIEW"
|
||||
},
|
||||
{
|
||||
"name": "DOCUMENT"
|
||||
},
|
||||
{
|
||||
"name": "DepComponent"
|
||||
},
|
||||
@ -308,6 +311,9 @@
|
||||
{
|
||||
"name": "getDirectiveDef"
|
||||
},
|
||||
{
|
||||
"name": "getDocument"
|
||||
},
|
||||
{
|
||||
"name": "getElementDepthCount"
|
||||
},
|
||||
|
@ -26,6 +26,9 @@
|
||||
{
|
||||
"name": "DECLARATION_VIEW"
|
||||
},
|
||||
{
|
||||
"name": "DOCUMENT"
|
||||
},
|
||||
{
|
||||
"name": "EMPTY_ARRAY"
|
||||
},
|
||||
@ -245,6 +248,9 @@
|
||||
{
|
||||
"name": "getDirectiveDef"
|
||||
},
|
||||
{
|
||||
"name": "getDocument"
|
||||
},
|
||||
{
|
||||
"name": "getFactoryDef"
|
||||
},
|
||||
|
@ -47,6 +47,9 @@
|
||||
{
|
||||
"name": "DEFAULT_TOTAL_SOURCES"
|
||||
},
|
||||
{
|
||||
"name": "DOCUMENT"
|
||||
},
|
||||
{
|
||||
"name": "DefaultIterableDiffer"
|
||||
},
|
||||
@ -656,6 +659,9 @@
|
||||
{
|
||||
"name": "getDirectiveDef"
|
||||
},
|
||||
{
|
||||
"name": "getDocument"
|
||||
},
|
||||
{
|
||||
"name": "getElementDepthCount"
|
||||
},
|
||||
|
Reference in New Issue
Block a user