我们在 IFrame 中显示了一个 Angular 4 应用程序。我们使用 PrimeNG 组件,在其中一种情况下,我们需要显示 PrimeNG p 对话框。默认情况下,p 对话框显示在 iframe 的中心(就高度而言),而不是顶部窗口(iframe 容器)的高度。
我在 p-dialog 中找到了一个 positionTop 属性,我们可以在其中设置 p-dialog 窗口的高度,并创建了一个指令
叠加位置
要在 p-dialog 元素中使用,如下所示。
<p-dialog [header]="header" [(visible)]="showLookupVariable" overlayPosition>
...
</p-dialog>
在overLayPosition中,我要设置positionTop
import { Directive, ElementRef, OnInit, Renderer2, EventEmitter, Output } from '@angular/core';
@Directive({
selector: '[overlayPosition]',
})
export class OverlayPositionDirective implements OnInit {
private element: any;
constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {
this.element = _elementRef.nativeElement;
}
ngOnInit() {
this.setHeight();
}
setHeight() {
const self = this;
try {
const offsetHeightElement = window.top.scrollY;// will be changing to Angular window later
this.element.attributes['positionTop'].value = offsetHeightElement;
} catch (error) {
// Cross reference errors will be caught here
}
}
}
..
但是 positionTop 属性变成了 positiontop(带有小写字母 t)并且 p-dialog 不接受属性值中声明的高度。
有人可以建议我从属性指令中设置 positionTop 的方式吗?
谢谢