gpt4 book ai didi

angular - 不使用 mat-error、ng-template 和 *ngTemplateOutlet 进行渲染

转载 作者:行者123 更新时间:2023-12-02 03:22:00 24 4
gpt4 key购买 nike

此代码工作正常(没有 ngTemplateOutlet):

<mat-form-field [formGroup]="formGroup">
<input matInput type="text"
[formControlName]="fControlName"
>
<ng-container *ngIf="isShowErrors()" ngProjectAs="mat-error">
<ng-container *ngFor="let error of showSMErrors" >
<mat-error>{{ error.message }}</mat-error>
</ng-container>
</ng-container>
</mat-form-field>

但是这段代码无法正常工作(使用 ngTemplateOutlet),为什么? (只需像普通红色文本一样查看 error.message):

<mat-form-field [formGroup]="formGroup">
<input matInput type="text"
[formControlName]="fControlName"
>
<ng-container *ngTemplateOutlet="showErrorsTemplate"></ng-container>
</mat-form-field>

<ng-template #showErrorsTemplate ngProjectAs="mat-error">
<ng-container *ngIf="isShowErrors()" >
<ng-container *ngFor="let error of showSMErrors" >
<mat-error>{{ error.message }}</mat-error>
</ng-container>
</ng-container>
</ng-template>

有什么想法吗?谢谢!

最佳答案

就像这里提到的 answer :

The <mat-error> elements need to be direct children of <mat-form-field> in order to work properly.

就像在那个答案中一样,如果情况是一个单独的组件,它也适用于这里:将容器设置在 mat-error 内标签,它会正常工作!

<mat-form-field [formGroup]="formGroup">
<input matInput type="text" [formControlName]="fControlName">
<mat-error>
<ng-container *ngTemplateOutlet="showErrorsTemplate"></ng-container>
</mat-error>
</mat-form-field>

这意味着您不需要使用mat-error在你的ng-template里面.

关于angular - 不使用 mat-error、ng-template 和 *ngTemplateOutlet 进行渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54506008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com