2017-04-21 16 views
-2

Nativescript/Angular2アプリで忙しく、ListViewでアクティブな在庫テイクのリストを表示しています。現在選択されているStockTakeを表示するためにListView内の現在選択されているStock Take Take項目の背景色を変更しようとしています。私はCSSのクラスをStackLayoutのng-template内に追加しますが、何らかの理由でアイテムをタップするとCSSが適用されません。どのようなアイデアがここで間違っている可能性があります/私はこれを修正する方法は?ListView - Nativescript/Angular2で現在選択されている項目の背景色を変更する際の問題

selectActiveStockTake(item, i) { 
    item.isSelected = !item.isSelected; 
} 

この:私は完全に問題はここにあるかもしれないものにと迷ってしまいましたので、私は

my ListView xml code: 

    <ListView [items]="activeStockTakes" class="list-group"> 
         <ng-template let-activeStockTake="item" let-i="index"> 
          <StackLayout [class.highlight]="item.isSelected" (tap)="selectActiveStockTake(item, index)"> 
           <Label class="list-group-item" [text]="activeStockTake.UserCode + ' - ' + activeStockTake.Comment"></Label> 
          </StackLayout> 
         </ng-template> 
        </ListView> 


    my css code: 

    .highlight { 
     background-color: red !important; 
     border-radius: 3; 
    } 

    my selectActiveStockTake event: 

selectActiveStockTake(item, index) { 
    //console.log(args.index); 
    this.selectedActiveStockTake = this.activeStockTakes[index]; 
    this.selectedActiveStockTake.isSelected = true; 
    console.log(this.selectedActiveStockTake.UserCode); 
} 

答えて

0

<ListView [items]="activeStockTakes" class="list-group"> 
    <ng-template let-activeStockTake="item" let-i="index"> 
     <StackLayout [class.highlight]="item.isSelected" (tap)="selectActiveStockTake(item, i)"> 
      <Label class="list-group-item" [text]="activeStockTake.UserCode + ' - ' + activeStockTake.Comment"></Label> 
     </StackLayout> 
    </ng-template> 
</ListView> 

、その後を試してみてください...すべてのエラーを得ることはありませんはるかにクリーンなソリューションであり、完璧に動作するはずです。

+0

唯一の問題は、後でバックエンドに投稿するイベントから取得したインデックスが必要なことです。また、私の現在のselectedActiveStockTakeItemモデルはisSelectedフィールドを持っていません... – user2094257

+0

@ user2094257 'ng-template'の' let-i = "index" 'を使ってインデックスにアクセスすることができます。そして 'isSelected'は単なる例でした。 'item ['isSelected']'を使うと、lintエラーを防ぐことができます。 – Chrillewoodz

+0

私はselectActiveStockTakeItem関数にインデックスを渡すだけです。例えばselectActiveStocktake(item、index)? – user2094257

関連する問題