Почему PrimeNG не показывает содержимое этих двух ng-шаблонов внутри компонента p-toolbar?

#primeng

#primeng

Вопрос:

Я использую PrimeNG версии 9 и при попытке реализовать этот пример нахожу следующую проблему: https://primefaces.org/primeng/showcase/#/table/crud

Моя проблема связана с панелью инструментов, реализованной в этих строках:

 <p-toolbar styleClass="p-mb-4">
    <ng-template pTemplate="left">
        <button pButton pRipple label="New" icon="pi pi-plus" class="p-button-success p-mr-2" (click)="openNew()"></button>
        <button pButton pRipple [label]="Delete" icon="pi pi-trash" class="p-button-danger" (click)="deleteSelectedProducts()" [disabled]="!selectedProducts || !selectedProducts.length"></button>
    </ng-template>

    <ng-template pTemplate="right">
        <p-fileUpload mode="basic" accept="image/*" [maxFileSize]="1000000" label="Import" chooseLabel="Import" class="p-mr-2 p-d-inline-block"></p-fileUpload>
        <button pButton pRipple label="Export" icon="pi pi-upload" class="p-button-help"></button>
    </ng-template>
</p-toolbar>
  

Проблема в том, что в моем коде эти кнопки не отображаются. Похоже, что проблема больше связана с двумя ng-шаблонами (слева и справа), потому что, открывая Chrome developer tools, я получаю этот вывод:

 <p-toolbar _ngcontent-yuc-c193="" styleclass="p-mb-4" ng-reflect-style-class="p-mb-4">
    <div role="toolbar" class="p-mb-4 ui-toolbar ui-widget ui-widget-header ui-corner-all ui-helper-clearfix" ng-reflect-ng-class="ui-toolbar ui-widget ui-widget">
        <p _ngcontent-yuc-c193="">TEST</p>
        <!--bindings={
            "ng-reflect-name": "left"
            }-->
        <!--bindings={
            "ng-reflect-name": "right"
        }-->
    </div>
</p-toolbar>
  

Итак, как вы можете видеть, два ng-шаблона, похоже, не работают нормально и не заполнены содержимым. Что именно означает этот отображаемый вывод?

Чего я не понимаю? Как я могу попытаться это исправить?

Ответ №1:

Импортируйте SharedModule в app.module.ts

 import { SharedModule } from 'primeng/api';
  

Это решение должно работать с pTemplate

Ответ №2:

Из документов:

Панель инструментов предоставляет шаблоны начала, центра и конца для размещения содержимого в этих разделах

Вы используете left / right шаблоны, которые не поддерживаются. Ваш код должен выглядеть следующим образом:

 <p-toolbar styleClass="p-mb-4">
    <ng-template pTemplate="start">
        <button pButton pRipple label="New" icon="pi pi-plus" class="p-button-success p-mr-2" (click)="openNew()"></button>
        <button pButton pRipple [label]="Delete" icon="pi pi-trash" class="p-button-danger" (click)="deleteSelectedProducts()" [disabled]="!selectedProducts || !selectedProducts.length"></button>
    </ng-template>

    <ng-template pTemplate="end">
        <p-fileUpload mode="basic" accept="image/*" [maxFileSize]="1000000" label="Import" chooseLabel="Import" class="p-mr-2 p-d-inline-block"></p-fileUpload>
        <button pButton pRipple label="Export" icon="pi pi-upload" class="p-button-help"></button>
    </ng-template>
</p-toolbar>