2017-11-01 10 views
0

consult.comebackの場合にのみ、私のhtmlのセクションが表示されます。私のコンストラクタでは、私は角2:ngifが削除されないコンテンツ

export class InviteConsultModal { 
    @ViewChild(Slides) slides: Slides; 
    consult: any = {}; 
    employees: any = []; 

    constructor(private viewCtrl: ViewController, private storage: Storage, private params: NavParams) { 

    this.consult.comeback = false; 

    } 
} 

呼び出してから、私のHTMLはそうのようになります。

<ion-item> 
    <ion-label floating>Is this a comeback?</ion-label> 
    <ion-select required name="comeback" [(ngModel)]="consult.comeback"> 
    <ion-option value="true">Yes</ion-option> 
    <ion-option value="false">No</ion-option> 
    </ion-select> 
</ion-item> 
<ion-item> 
    <!-- displays correct value --> 
    {{consult.comeback}} 
</ion-item> 

<!-- initially is NOT shown --> 
<ion-item *ngIf="consult.comeback"> 
    <ion-label floating>Original Sale</ion-label> 
    <ion-select [(ngModel)]="consult.original" name="original"> 
    <ion-option *ngFor="let employee of employees" [value]="employee.id">{{ employee.name }}</ion-option> 
    </ion-select> 
</ion-item> 

奇妙なことは、私はtrueconsult.comebackの値を変更した後(予想通り)、セクションが表示されていることで、一度それをfalseに戻すと、それは消えません。

どのようにして値を表示/非表示にすることができますか?

答えて

0

オプションタグの値は文字列なので、オプションは実際には"true""false"です。したがって、*ngIf="'false'"は技術的に真の状態です。あなたがここ

<ion-item *ngIf="consult.comeback === 'true'"> 
</ion-item> 

に* ngIfを切り替えることができ

はこれをデモplunkrです。 https://plnkr.co/edit/YthqofKZP7LcG6zY0mVK?p=preview

+0

@Vega私はplunkrを更新しました。コンソールでは、オプションが 'string'型であることが分かります。 – LLai

+0

OPの改良として、':any'型の使用を最小限に抑え、** consult ** variableにいくつかの型を提供することをお勧めします。おそらく、いくつかのクラスを作成し、デフォルトではcomeback = falseで初期化します。その後、 '* ngIf =" consult.comeback "'が適切に動作します。 –

関連する問題