1

当我安装星云主题时,我收到关于我使用的角度材料模态的错误。我仅将 nebular 用于身份验证页面。错误是ERROR TypeError: Cannot read properties of undefined (reading 'appendChild') 我能做些什么来解决这个问题?

4

1 回答 1

0

Nebular 会自动为Overlay container注入一个新的实现,所以当你使用任何使用 angular cdk overlay 的弹出窗口时,它会失败,除非 Nebular Overlay Container 可以找到它的元素,我猜这个元素是 nebular 布局组件,所以基本上你可以'如果不使用星云布局之外的任何对话框,您可以采用的一种解决方案是实现自己的 Overlay Container 并在具有 mat 对话框使用的模块中提供它。像这样的东西

@Injectable()
export class MyOverlayContainer extends OverlayContainer implements OnDestroy {
  constructor(@Inject(DOCUMENT) document: Document, _platform: Platform) {
    super(document, _platform);
  }

  protected _createContainer(): void {
    super._createContainer();
    if (!this._containerElement) {
      return;
    }
    const parent = document.body;
    parent.appendChild(this._containerElement);
  }

  ngOnDestroy() {
    super.ngOnDestroy();
    this._containerElement = null;
  }
}

在你的模块中

 import { OverlayContainer } from '@angular/cdk/overlay';

 @NgModule({
 providers: [{ provide: OverlayContainer, useClass: MyOverlayContainer }]  
 })
于 2021-09-28T16:19:29.920 回答