Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular else部分不在*ngIf语句中执行_Angular_Angular Ng If - Fatal编程技术网

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的后面。”