从 angular 17 升级到 angular 19 后,下面使用 ngTemplateOutlet 的代码无法正常工作
<div>
<div class="post-list-batch-operation-left">
<nz-space>
<ng-container *ngFor="let item of items">
<ng-container *ngIf="item.checkIsEnabled(postType)">
<div *nzSpaceItem>
<ng-container *ngTemplateOutlet="itemTmpl;context:item"></ng-container>
</div>
</ng-container>
</ng-container>
</nz-space>
</div>
</div>
<ng-template #itemTmpl let-title="title" let-onClick="onClick" let-icon="icon">
<button [title]="title" nz-button nzType="text" (click)="onClick()">
<i class="iconfont font-size-inherited" [class]="icon"></i>
</button>
</ng-template>
ng-template 的内容没有显示
如果不用星号,可以这么写
<ng-container [ngTemplateOutlet]="itemTmpl" [ngTemplateOutletContext]="{item}"></ng-container>
是少了下面两个 import 引起的
@Component({
imports: [NgTemplateOutlet, NzSpaceModule]
})
迁移到 standalone components 后被这个问题坑了很多次,因为 angular 编译器在编译时发现不了一些 import 缺失的情况
在出问题时引用了 NzSpaceComponent
,没有引用 NzSpaceModule