代码之家  ›  专栏  ›  技术社区  ›  Omar

在同一组件中重复HTML

  •  0
  • Omar  · 技术社区  · 7 年前

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

    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>
    

    有使用方法吗 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>
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   ConnorsFan    7 年前

    您可以插入 ng-template 具有 ng-container 角元素和 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>
    
        2
  •  0
  •   benshabatnoam    7 年前

    在模板中创建包含HTML的子组件,并在(父)组件中根据需要多次使用它,如下所示:

    子组件:

    import { Component, OnInit, Input } from '@angular/core';
    
    @Component({
      selector: 'app-child-comp',
      template: `
        <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>
      `,
      styleUrls: ['./child-comp.component.css']
    })
    export class ChildCompComponent implements OnInit {
      @Input() pages;
    
      constructor() { }
    
      ngOnInit() {
      }
    
      onPageChange(index, event) {
      }
    
    }
    

    父组件:

    <div id="header">
      <app-child-comp [pages]="pages"></app-child-comp>
    </div>
    <div id="content">...</div>
    <div id="footer">
      <app-child-comp [pages]="pages"></app-child-comp>
    </div>