Defer

Defer postpones the loading the content that is initially not in the viewport until it becomes visible on scroll.


import { Defer } from 'primeng/defer';

Defer is applied to a container element with pDefer directive where content needs to be placed inside an ng-template.

Content is not loaded yet, scroll down to initialize it.


<div pDefer (onLoad)="onLoad()">
    <ng-template>
        <img
            class="w-full md:w-[30rem] md:block md:mx-auto"
            src="https://primefaces.org/cdn/primeng/images/demo/nature/nature1.jpg"
            alt="Prime" />
    </ng-template>
</div>

Defer is applied to a container element with pDefer directive where content needs to be placed inside an ng-template.

Table is not loaded yet, scroll down to initialize it.


<div pDefer (onLoad)="initData()">
    <ng-template>
        <p-table [value]="cars" responsiveLayout="scroll">
            <ng-template pTemplate="header">
                <tr>
                    <th>Vin</th>
                    <th>Year</th>
                    <th>Brand</th>
                    <th>Color</th>
                </tr>
            </ng-template>
            <ng-template pTemplate="body" let-car>
                <tr>
                    <td>{{car.vin}}</td>
                    <td>{{car.year}}</td>
                    <td>{{car.brand}}</td>
                    <td>{{car.color}}</td>
                </tr>
            </ng-template>
        </p-table>
    </ng-template>
</div>