Szo*_*rba 2 angular-material ng-template angular ng-container
这段代码工作正常(没有 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>
Run Code Online (Sandbox Code Playgroud)
但是这段代码无法正常工作(使用 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>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
就像这个答案中提到的那样:
这些
<mat-error>元素必须是直接子元素<mat-form-field>才能正常工作。
就像在那个答案中一样,如果情况是一个单独的组件,它也适用于这里:将容器设置在标签内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>
Run Code Online (Sandbox Code Playgroud)
这意味着您不需要mat-error在您的ng-template.
| 归档时间: |
|
| 查看次数: |
2528 次 |
| 最近记录: |