Проблема в том, что getElementById
возвращает HTMLElement
, а не HtmlIFrameElement
. Что вы можете сделать, это определить тип защиты, чтобы убедиться, что frame
является IFRAME
. Вторая проблема заключается в том, что contentWindow
может быть нулевым, поэтому мы также должны это проверить.
const isIFrame = (input: HTMLElement | null): input is HTMLIFrameElement =>
input !== null && input.tagName === 'IFRAME';
function ngAfterViewInit() {
let frame = document.getElementById('your-frame-id');
if (isIFrame(frame) && frame.contentWindow) {
frame.contentWindow.postMessage({}, '*');
}
}