Search code examples
angulartypescriptionic-frameworksegmentngmodel

How can I use *ngSwitchWhen to typescript?


I am working on Ionic2 + Angular2, and I want to use segment, so I used ngSwitchWhen, but it doesn't work. An error occurred.

How can I use this? Why it does not work?

Here is the error message.

<ion-toolbar>
    <ion-segment [(ngModel)]="menuSelect" color="important">
        <ion-segment-button value="light">
            Light
        </ion-segment-button>
        <ion-segment-button value="sensor">
            Sensor
        </ion-segment-button>
    </ion-segment>
</ion-toolbar> 

<ion-content [ngSwitch]="menuSelect">
    <!--func+ - light-->
    <ion-item *ngSwitchWhen="'light'">
        <ion-list>
            <ion-list-header>
                <ion-label>On/Off</ion-label>
                <ion-toggle (click)="toggleLight()"></ion-toggle>
            </ion-list-header>
        </ion-list>

        <!--light-off-->
        <div [hidden]="lightOn">
            <div class="light-off">Please turn on the light.</div>
        </div>

        <!--light-on-->
        <div [hidden]="!lightOn">
            <ion-list>
                <ion-list-header class="title">
                    Color
                </ion-list-header>
            </ion-list>
            <ion-list>
                <ion-list-header class="title">
                    Brightness
                    <ion-badge>{{brightness}}</ion-badge>
                </ion-list-header>
                <ion-item>
                    <ion-range min="0" max="5" step="1" snaps="true" [(ngModel)]="brightness">
                        <ion-icon range-left small name="sunny"></ion-icon>
                        <ion-icon range-right name="sunny"></ion-icon>
                    </ion-range>
                </ion-item>
            </ion-list>
        </div>
    </ion-item>

    <!--func+ - sensor-->
    <ion-item *ngSwitchWhen="'sensor'">
        <ion-list>
            <ion-list-header>
                <ion-label>On/Off</ion-label>
            </ion-list-header>
        </ion-list>
    </ion-item>
</ion-content>

Solution

  • You may Try for this:

    and please chage your keyboard 'ngSwitchWhen' to 'ngSwitch'

    In your @Component.Html

    <div [ngSwitch]="data.type">
      <div *ngSwitchDefault>FORM 1</div>
      <div *ngSwitchCase="'light'">FORM 2</div>
    <div *ngSwitchCase="'sensor'">FORM 2</div>
    </div>
    

    Bu in your @Component.ts:

    public data:any[]=[];
    data.push({type:'light'},{type:'sensor'});