У меня есть следующий простой скрипт из моего исходного приложения, и, поскольку я перешел на Angular, я хотел бы, чтобы он работал и там.
Оригинальный скрипт (date.js):
window.onload = (function() {
var map = document.getElementById('map').contentDocument;
var today = new Date();
var date = today.toDateString();
var textBox = map.getElementById('date');
var textWrite = map.createTextNode(date);
textBox.appendChild(textWrite);
});
Теперь в Angular я пытаюсь получить доступ к элементу, но он возвращает null. Это компонент HTML:
<object class = "mapCanvas" data = "assets/canvas/map.svg" type = "image/svg+xml" #map>Browser
doesn't support SVG</object>
И в component.ts:
@ViewChild('map', {read: ElementRef}) map: ElementRef;
constructor() { }
ngAfterViewInit(): void {
console.info(this.map.nativeElement.contentDocument);
}
Как я могу получить доступ к содержимому элемента DOM (объекта) и заставить скрипт работать?
Пожалуйста, включите свой html для этого компонента. Просто машинопись не дает достаточно информации, так как вы пытаетесь получить доступ к DOM
Теперь он включен :)
Ваш код подходит для получения элемента из шаблона?
Уверен, что contentDocument предназначен для iframe? Не видите iframe в вашем html
contentDocument предназначен для объекта. Скрипт отлично работает вне Angular, с чистой реализацией HTML/JS.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Можете ли вы привести пример Stackblitz?