在同一组件内重复 html

Oma*_*mar 3 ng-template angular

我正在寻找一种在组件中的多个位置重复相同标记的方法。我知道我可以使用一个新组件,但我正在寻找一些不那么严重的东西。

html

        <nav class="pages">
            <ul class="inline">
                <li 
                    *ngFor="let p of pages; let i = index;"
                    [ngClass]="{'active': page.current_page == i+1}"
                    (click)="onPageChange(i+1, $event)"
                >{{i+1}}</li>
            </ul>
        </nav>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以ng-template在同一组件内的多个位置重复相同的标记...如下所示

<div id="header"> <ng-template [innHTML]="#pages"></ng-template> </div>
<div id="content">...</div>
<div id="footer"> <ng-template [innHTML]="#pages"></ng-template> </div>

<ng-container #pages>
    <ul class="inline">
        <li *ngFor="let p of pages; let i = index;" [ngClass]="{'active': page.current_page == i+1}" (click)="onPageChange(i+1, $event)">{{i+1}}</li>
    </ul>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

Con*_*Fan 7

ng-template您可以使用ng-containerAngular 元素和ngTemplateOutlet指令插入内容。

<div id="header">
  <ng-container *ngTemplateOutlet="pages; context: { text: 'value1' }"></ng-container>
</div>
<div id="content">...</div>
<div id="footer">
  <ng-container *ngTemplateOutlet="pages; context: { text: 'value2' }"></ng-container>
</div>

<ng-template #pages let-value="text">
  <div>The value is {{value}}</div>
  <ul class="inline">
    <li *ngFor="let p of pages; let i = index;" [ngClass]="{'active': page.current_page == i+1}" (click)="onPageChange(i+1, $event)">{{i+1}}</li>
  </ul>
</ng-template>
Run Code Online (Sandbox Code Playgroud)