From da74764b693b3b895a2cc7cd0c1fe10a37264c62 Mon Sep 17 00:00:00 2001 From: jaybell Date: Mon, 5 Sep 2022 14:44:53 -0700 Subject: [PATCH] fix(common): use DOCUMENT token to query for preconnect links (#47353) `PreconnectLinkChecker` checks to see if preconnect links have been added to the `` element but uses `document` directly which does not exist when rendering in Angular Universal. This PR switches the `PreconnectLinkChecker` to use the `DOCUMENT` token instead so that the query works when SSR'ing PR Close #47353 --- .../ng_optimized_image/preconnect_link_checker.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts b/packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts index a59051e22c2050..63240e9bd3d769 100644 --- a/packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts +++ b/packages/common/src/directives/ng_optimized_image/preconnect_link_checker.ts @@ -49,6 +49,8 @@ export const PRECONNECT_CHECK_BLOCKLIST = */ @Injectable({providedIn: 'root'}) export class PreconnectLinkChecker { + private document = inject(DOCUMENT); + /** * Set of tags found on this page. * The `null` value indicates that there was no DOM query operation performed. @@ -66,7 +68,7 @@ export class PreconnectLinkChecker { constructor() { assertDevMode('preconnect link checker'); - const win = inject(DOCUMENT).defaultView; + const win = this.document.defaultView; if (typeof win !== 'undefined') { this.window = win; } @@ -127,7 +129,7 @@ export class PreconnectLinkChecker { private queryPreconnectLinks(): Set { const preconnectUrls = new Set(); const selector = 'link[rel=preconnect]'; - const links: HTMLLinkElement[] = Array.from(document.querySelectorAll(selector)); + const links: HTMLLinkElement[] = Array.from(this.document.querySelectorAll(selector)); for (let link of links) { const url = getUrl(link.href, this.window!); preconnectUrls.add(url.origin);