<ng-template></ng-template>正在多次加载



我正在使用ngTemplateOutlet 来加载. 但它多次加载模板。它正在加载正确的模板,但它执行多次加载模板((方法。

HTML 中:

<table>
    <thead>
    </thead>
    <tbody>
        <ng-template [ngTemplateOutlet]="loadTemplate()"></ng-template>
    </tbody>
</table>
<ng-template #template1>
    <tr *ngFor="iteration">
        <p>Hiii</p>
    </tr>
</ng-template>
<ng-template #template2>
    <tr *ngFor="iteration">
        <p>Byee</p>
    </tr>
</ng-template>

在我的组件中

@ViewChild('template1') template1: TemplateRef<any>;
@ViewChild('template1') template1: TemplateRef<any>;
loadTemplate(){
    if (condition)
        return this.template1;
    return this.template2;
}
[ngTemplateOutlet]="loadTemplate()"

导致每次运行更改检测时调用loadTemplate()

而是将loadTemplate()的结果分配给字段并在绑定中使用该字段

[ngTemplateOutlet]="myTemplate"

然后更改检测和 ngTemplateOutlet 指令可以看到没有更改,并且不会重新初始化模板。

另一种方法是:

<table>
    <thead>
    </thead>
    <tbody>
        <ng-template [ngTemplateOutlet]="condition ? template1 : template2"></ng-template>
    </tbody>
</table>
<ng-template #template1>
    <tr *ngFor="iteration">
        <p>Hiii</p>
    </tr>
</ng-template>
<ng-template #template2>
    <tr *ngFor="iteration">
        <p>Byee</p>
    </tr>
</ng-template>

相关内容

  • 没有找到相关文章

最新更新