2016-12-17 3 views
0

ユーザがタップするボタンに応じてテンプレートの別の部分を表示しようとしています。タップ機能がngIf条件で使用される変数を変更したときに更新されないビュー

私はAngularにChange Detectionを実行する必要があるかどうかわかりません。

<Button (tap)="showTab(0)" text="Show Tab 0"></Button> 
    <Button (tap)="showTab(1)" text="Show Tab 1"></Button> 
    <StackLayout *ngIf="currentTab == 0"> 
     <Label text="Tab 0"></Label> 
    </StackLayout> 
    <StackLayout *ngIf="currentTab == 1"> 
     <Label text="Tab 1" class="user-name"></Label> 
    </StackLayout> 

コンポーネント:

export class MyComponent { 
    currentTab: number = 0; 
    ... 
    showTab = (num: number) => { 
    this.currentTab = num; 
    } 
    ... 
} 

行動:

  • 正しいタブ(

    テンプレート(私はそう、この概念を把握しようとすると、角度2への新たなんです) 0)は最初の負荷で表示され、「Show Tab 1」をクリックすると消えますが、Tab 1は表示されません。

  • 「タブ0を表示」をクリックしても何も行われません。

ありがとうございました!

+0

console.log(this.currentTab)を適用してcurrentTabの値をチェックしましたか。あなたがショーで?何かエラーが出ていますか? –

+0

Amit-はい、this.currentTabの値をログに記録でき、正しく設定されています。コンソールにエラーはありません。 – Ryan27

+0

あなたのコードをテストしましたが、iOSエミュレータに関する問題はありませんでした。私はあなたが古くなっているかもしれないので、あなたが使っているバージョンをチェックします。また、実際のデバイスやエミュレータで、どのプラットフォームを使用していましたか? –

答えて

0

コードが正しいようです。あなたのcurrentTabを作ることはできますか?boolean = false;

<Button (tap)="showTab(false)" text="Show Tab 0"></Button> 
    <Button (tap)="showTab(true)" text="Show Tab 1"></Button> 
    <StackLayout *ngIf="!currentTab"> 
     <Label text="Tab 0"></Label> 
    </StackLayout> 
    <StackLayout *ngIf="currentTab"> 
     <Label text="Tab 1" class="user-name"></Label> 
    </StackLayout> 

export class MyComponent { 
    currentTab: boolean = false; 
    ... 
    showTab(num: boolean){ 
    this.currentTab = num; 
    } 
    ... 
} 

として

とコードもこのようshowTabを試みる(NUM:数){} showTab =の代わりに(NUM:数)=> {};あなたのタイプをチェックしてください。

+0

私はこれと同じ結果を試しました。私はコンソールでブール値を正しく見ることができますが、ビューは更新されません。 NativeScriptのレイアウトタグでngIfを使用すると何かになりますか? – Ryan27

+1

これは正常に機能します。私は毎日これらの種類のものを使います。私はまだNativeScriptを試していません。しかし、それが変化を検出する場合は、ngZoneを試してみる必要があります。時々、私は流星と角2の統合を使用するとき、私はこれらの問題に直面します。 ngZoneを試してください。私のこの答えを確認してくださいhttp://stackoverflow.com/questions/41145290/alert-in-meteor-angular-2-app-only-appears-after-click-in-browserこれがあなたを助けることを願っています。 –

0

* ngIfの代わりに [hidden]を使用してみましたか?

関連する問題