innerHTML
に設定するHTMLはデフォルトでサニタイズされるようになっており、iframeタグが自動的に除去されるのが原因でした。
サニタイズされるのはjavascriptだけだと思っていましたが、iframeも駄目みたいです。
import { DomSanitizer } from '@angular/platform-browser';
constructor(private sanitizer: DomSanitizer) {}
let innerHTML = this.sanitizer.bypassSecurityTrustHtml(html);
サニタイズすると、iframeだけではなくjavascriptも埋め込み可能になるのでXSSには注意して下さい。