Сценарий правильно добавляется в DOM со своими свойствами (я пробовал несколько комбинаций async, defer и т. д.) из app.ts: затем я внедряю объект window в подкомпонент из document.defaultView.
Если Я пытаюсь получить доступ к самому объекту window, он работает, но всякий раз, когда я пытаюсь получить доступ к его свойству (например, window.something), он терпит неудачу: я думал, что это неправильный крючок жизненного цикла, поэтому я попытался вызвать его из каждого, но с тем же результатом.
Мне удается получить доступ к свойствам окна только, если я устанавливаю тайм-аут, независимо от того, какой крючок.
Чтобы быть четным яснее…
Код: Выделить всё
export class Foo implements Something {
myFunction() {
console.log(this.window?.bar); // fails, bar is undefined
}
ngSomething() {
this.myFunction();
}
}
Код: Выделить всё
export class Foo implements Something {
myFunction() {
setTimeout(() => {
console.log(this.window?.bar); // succeeds, bar is printed to the console
}, 1000);
}
ngSomething() {
this.myFunction();
}
}
Код: Выделить всё
awaitМой вопрос… есть ли лучший способ доступа к объекту window в Angular 20, чтобы я мог использовать объект window.bar внутри компонента?
Сейчас я использую следующий способ:
Код: Выделить всё
import {
...
DOCUMENT,
inject
}
[...]
export class Foo implements Something {
private readonly document = inject(DOCUMENT);
private readonly window = this.document?.defaultView;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -object-in
Мобильная версия