要在Angular应用程序中解决这个问题,可以使用以下方法:
HTML:
模态框组件: import { Component, ElementRef, EventEmitter, Input, OnInit, Output, Renderer2 } from '@angular/core';
@Component({
selector: 'app-modal',
template:
,
styleUrls: ['./modal.component.css']
})
export class ModalComponent implements OnInit {{{title}}
@Input() title: string;
@Output() onClose: EventEmitter
constructor(private el: ElementRef, private renderer: Renderer2) { }
ngOnInit() { this.renderer.setStyle(this.el.nativeElement.ownerDocument.body, 'overflow', 'hidden'); }
ngOnDestroy() { this.renderer.setStyle(this.el.nativeElement.ownerDocument.body, 'overflow', ''); }
open() { const backdrop = this.renderer.createElement('div'); backdrop.className = 'backdrop'; this.renderer.appendChild(this.el.nativeElement.ownerDocument.body, backdrop); }
close() { this.renderer.removeChild(this.el.nativeElement.ownerDocument.body, this.el.nativeElement.nextSibling); this.onClose.emit(); }
@HostListener('document:click