The portals
package provides a flexible system for rendering dynamic content into an application.
A Portal
is a piece of UI that can be dynamically rendered to an open slot on the page.
The "piece of UI" can be either a Component
or a TemplateRef
and the "open slot" is a PortalOutlet
.
Portals and PortalOutlets are low-level building blocks that other concepts, such as overlays, are built upon.
Portal<T>
Method | Description |
---|---|
attach(PortalOutlet): T | Attaches the portal to a host. |
detach(): void | Detaches the portal from its host. |
isAttached: boolean | Whether the portal is attached. |
PortalOutlet
Method | Description |
---|---|
attach(Portal): any | Attaches a portal to the host. |
detach(): any | Detaches the portal from the host. |
dispose(): void | Permanently dispose the host. |
hasAttached: boolean | Whether a portal is attached to the host. |
CdkPortal
Used to get a portal from an <ng-template>
. CdkPortal
is a Portal
.
Usage:
<ng-template cdkPortal>
<p>The content of this template is captured by the portal.</p>
</ng-template>
<!-- OR -->
<!-- This result here is identical to the syntax above -->
<p *cdkPortal>
The content of this template is captured by the portal.
</p>
A component can use @ViewChild
or @ViewChildren
to get a reference to a CdkPortal
.
ComponentPortal
Used to create a portal from a component type. When a component is dynamically created using portals, it must be included in the entryComponents
of its NgModule
.
Usage:
this.userSettingsPortal = new ComponentPortal(UserSettingsComponent);
CdkPortalOutlet
Used to add a portal outlet to a template. CdkPortalOutlet
is a PortalOutlet
.
Usage:
<!-- Attaches the `userSettingsPortal` from the previous example. -->
<ng-template [cdkPortalOutlet]="userSettingsPortal"></ng-template>