Angular else部分不在*ngIf语句中执行
我使用的是Angular else部分不在*ngIf语句中执行,angular,angular-ng-if,Angular,Angular Ng If,我使用的是*ngIf语句,但其中有一个问题:else部分不执行。我不知道为什么,这是源代码 <form [formGroup]="reviewForm" (ngSubmit)="onSubmit()"> <div formArrayName="controlArray"> <div class="form-group" *ngFor="let control of reviewForm.get('controlArr
*ngIf
语句,但其中有一个问题:else部分不执行。我不知道为什么,这是源代码
<form [formGroup]="reviewForm" (ngSubmit)="onSubmit()">
<div formArrayName="controlArray">
<div class="form-group"
*ngFor="let control of reviewForm.get('controlArray').controls; let i = index">
{{control.value}}
<span *ngIf="control.value!='dropdown';else addDropDown">
<input type="{{control.value}}"
class="form-control"
[formControlName]="i" />
<ng-template #addDropDown>
<p>hello world</p>
<select class="form-control"
[formControlName]="i">
</select>
</ng-template>
</span>
</div>
</div>
</form>
{{control.value}}
你好,世界
请提供帮助,谢谢。else条件的模板应与*ngIf条件的模板@level相同。 当*ngIf为false时,将从DOM中删除当前元素。由于ng模板位于元素内部,因此它不适用于else条件 *ngIf-else工作的正确方法是让else模板位于DOM层次结构中除*ngIf之外的任何位置 有关更多信息: 在您的情况下,将代码更改为
<!-- If Template -->
<span *ngIf="control.value!='dropdown';else addDropDown">
<input
type="{{control.value}}"
class="form-control"
[formControlName]="i">
</span>
<!-- Else Template -->
<ng-template #addDropDown>
<p>hello world</p>
<select `enter code here`
class="form-control"
[formControlName]="i">
</select>
</ng-template>
你好,世界
我认为else模板不应该与*ngif条件处于同一级别,只是不应该是*ngif的子级,因为该元素将不可见。“该模板可以在组件视图中的任何位置定义,但为了可读性,通常放在ngIf的后面。”