Ionic 2. Content ngFor in segments

0

Good, I have a problem when loading the content of different segments on my page. I show you first the code in which I create the segments and their content.

<div padding>
  <ion-segment [(ngModel)]="accion">
    <ion-segment-button value="crear">
      Crear zona
    </ion-segment-button>
    <ion-segment-button value="modificar">
      Modificar zona
    </ion-segment-button>
  </ion-segment>
</div>

<ion-card center *ngIf="accion=='crear'">
  <ion-card-content>

    <ion-list>
      <ion-item>
        <ion-label floating> Nombre del area: </ion-label>
        <ion-input type="text" [(ngModel)]="nombreArea"> </ion-input>
      </ion-item>
      <ion-item>
        <label>Dispositivo asociado:</label>
        <ion-list>
          <ion-item *ngFor="let dispositivo2 of dispositivosAnadir">
            <ion-label> {{dispositivo2.name}} </ion-label>
              <ion-checkbox color="royal" [(ngModel)]="dispositivo2.selected" value="dispositivo2.value"></ion-checkbox>
          </ion-item>
        </ion-list>
      </ion-item>
    </ion-list>

    <div padding>
      <button (click)="marcarTodos()" ion-button icon-left color="royal">
        <ion-icon name="checkmark-circle"></ion-icon> Marcar todos 
      </button>
      <button (click)="desmarcarTodos()" ion-button icon-left color="royal"> 
        <ion-icon name="radio-button-off"></ion-icon> Desmarcar todos 
      </button>
    </div>

    <div padding>
      <button (click)="startShape()" [disabled]="pintando" ion-button icon-left color="royal">
        <ion-icon name="brush"></ion-icon> Pintar zona
      </button>
      <button (click)="endShape()" [disabled]="!pintando" ion-button icon-left color="royal">
        <ion-icon name="flag"></ion-icon> Fin pintar zona
      </button>
      <button (click)="cancelShape()" [disabled]="!pintando" ion-button icon-left color="royal">
        <ion-icon name="close"></ion-icon> Cancelar
      </button>
    </div>

  </ion-card-content>
</ion-card>


<ion-card center *ngIf="accion=='modificar'">
  <ion-card-content>

    <ion-list>
      <ion-item>
        <ion-label>Seleccionar zona: </ion-label>
        <ion-select [(ngModel)]="zonasSelector.seleccionada" (ionChange)="cambioZonaSeleccionada()">
          <ion-option *ngFor="let zona of zonasSelector.array" [value]="zona.value">{{zona.name}}</ion-option>
        </ion-select>
      </ion-item>
      <ion-item>
        <ion-list>
          <ion-item *ngFor="let dispositivo of dispositivosModificar">
            <ion-label> {{dispositivo.name}} </ion-label>
              <ion-checkbox color="royal" [(ngModel)]="dispositivo.selected" value="dispositivo.value" [disabled]="zonasSelector.seleccionada == null"></ion-checkbox>
          </ion-item>
        </ion-list>
      </ion-item>
    </ion-list>

    <div padding>
      <button ion-button icon-left (click)="modificarZona()" [disabled]="zonasSelector.seleccionada == null" color="royal"> 
        <ion-icon name="checkmark"></ion-icon> Modificar 
      </button>
      <button ion-button icon-left (click)="showConfirmDelete()" [disabled]="zonasSelector.seleccionada == null" color="royal"> 
        <ion-icon name="trash"></ion-icon> Eliminar
      </button>
    </div>

  </ion-card-content>
</ion-card>

Before having it like that, I had it all together on the page, without separation and it worked perfectly. By separating the content by segments I see a problem. In the content of both segments I have an ngFor that allows to show a set of checkboxs. The first time I load the page, the content of the default segment appears without problems, but if I change the segment the set of checkboxes does not appear again.

Does anyone have any idea why this happens?

    
asked by Cristina Extremera Romero 13.06.2017 в 02:07
source

1 answer

0

In case anyone is interested I have managed to solve it by removing the ion-list where I have the ng-for outside the ion-list where it is included, that is, leaving the ion-list of the ng-for simply inside ion- content.

<!-- SEGMENTOS -->
<div padding>
  <ion-segment [(ngModel)]="accion">
    <ion-segment-button value="crear">
      Crear zona
    </ion-segment-button>
    <ion-segment-button value="modificar">
      Modificar zona
    </ion-segment-button>
  </ion-segment>
</div>


<!-- CREAR ZONA -->
<ion-card center *ngIf="accion=='crear'">
  <ion-card-content>

    <ion-list>
      <ion-item>
        <ion-label floating> Nombre del area: </ion-label>
        <ion-input type="text" [(ngModel)]="nombreArea"> </ion-input>
      </ion-item>
    </ion-list>

    <div padding>
      <label>Dispositivo asociado:</label>
      <ion-list>
        <ion-item *ngFor="let dispositivo2 of dispositivosAnadir">
          <ion-label> {{dispositivo2.name}} </ion-label>
            <ion-checkbox color="royal" [(ngModel)]="dispositivo2.selected" value="dispositivo2.value"></ion-checkbox>
        </ion-item>
      </ion-list>
    </div>

    <div padding>
      <button (click)="marcarTodos()" ion-button icon-left color="royal">
        <ion-icon name="checkmark-circle"></ion-icon> Marcar todos 
      </button>
      <button (click)="desmarcarTodos()" ion-button icon-left color="royal"> 
        <ion-icon name="radio-button-off"></ion-icon> Desmarcar todos 
      </button>
    </div>

    <div padding>
      <button (click)="startShape()" [disabled]="pintando" ion-button icon-left color="royal">
        <ion-icon name="brush"></ion-icon> Pintar zona
      </button>
      <button (click)="endShape()" [disabled]="!pintando" ion-button icon-left color="royal">
        <ion-icon name="flag"></ion-icon> Fin pintar zona
      </button>
      <button (click)="cancelShape()" [disabled]="!pintando" ion-button icon-left color="royal">
        <ion-icon name="close"></ion-icon> Cancelar
      </button>
    </div>

  </ion-card-content>
</ion-card>


<!-- MODIFICAR ZONA -->
<ion-card center *ngIf="accion=='modificar'">
  <ion-card-content>

    <ion-list>
      <ion-item>
        <ion-label>Seleccionar zona: </ion-label>
        <ion-select [(ngModel)]="zonasSelector.seleccionada" (ionChange)="cambioZonaSeleccionada()">
          <ion-option *ngFor="let zona of zonasSelector.array" [value]="zona.value">{{zona.name}}</ion-option>
        </ion-select>
      </ion-item>
    </ion-list>

    <ion-list>
      <ion-item *ngFor="let dispositivo of dispositivosModificar">
        <ion-label> {{dispositivo.name}} </ion-label>
        <ion-checkbox color="royal" [(ngModel)]="dispositivo.selected" value="dispositivo.value" [disabled]="zonasSelector.seleccionada == null"></ion-checkbox>
      </ion-item>
    </ion-list>

    <div padding *ngIf="accion=='modificar'">
      <button ion-button icon-left (click)="modificarZona()" [disabled]="zonasSelector.seleccionada == null" color="royal"> 
        <ion-icon name="checkmark"></ion-icon> Modificar 
      </button>
      <button ion-button icon-left (click)="showConfirmDelete()" [disabled]="zonasSelector.seleccionada == null" color="royal"> 
        <ion-icon name="trash"></ion-icon> Eliminar
      </button>
    </div>

  </ion-card-content>
</ion-card>
    
answered by 14.06.2017 в 20:10