Angular CDK Portal,多个Portal到一个PortalOutlet?

Angular CDK Portal, multiple Portals to one PortalOutlet?

正如标题所述,是否真的可以使用 Angular CDK portals/portalOutlets 将多个门户附加到一个 PortalOutlet,我一直在挖掘 CDK 源代码,但似乎无法找到任何表明这是可能的东西。

主要是在portals.ts.

这段代码上得出这个结论
attach(portal: Portal<any>): any {
  if(!portal) {
    throwNullPortalError();
  }

    if(this.hasAttached()) {
  throwPortalAlreadyAttachedError();
}

if (this._isDisposed) {
  throwPortalOutletAlreadyDisposedError();
}

if (portal instanceof ComponentPortal) {
  this._attachedPortal = portal;
  return this.attachComponentPortal(portal);
} else if (portal instanceof TemplatePortal) {
  this._attachedPortal = portal;
  return this.attachTemplatePortal(portal);
}

在这种情况下,我显然可以创建多个 portalOutlets 或叠加层,并使用 componentFactoryResolver 将组件门户单独附加到每个叠加层,但同样不是我所追求的场景。

这确实不可能。您可以做的是为您的门户创建一个通用容器,然后仅 attach/detach 该容器到 PortalOutlet,具体取决于是否要显示 1 个或多个门户。

您必须创建自己的附加视图逻辑,但使用 viewContainerRef

非常简单