typescript - როგორ შევცვალოთ მონაცემები change მოვლენით Angular 8-ში


როგორ შევცვალოთ მონაცემები (change) მოვლენას გამოყენების დროს. მე ვცდილობ შევცვალო გალერეის ელემენტები მნიშვნელობის შესაბამისობის მიხედვით, თავდაპირველად მინდა ყველას აჩვენოს გალერეის ყველა ელემენტი

public items = [{
    value: 'All',
    name: 'All Items'
  },
  {
    value: 'Photos',
    name: 'Photo Items'
  },
  {
    value: 'Video',
    name: 'Video Items'
  },
];
<div *ngFor="let item of items" class="nav-li">
  <ul>
    <li class="value" [value]="item.value"><a href="">{{item.value}}</a></li>
  </ul>

</div>

<div class="gallery">
  <div *ngFor="let item of items" class="card">
    <div class="data">{{item.name}}</div>
  </div>
</div>

მინდა წარმოვაჩინოთ ყველა ნივთი, და თუ ფოტოზე დააჭერ, შეიტანე ცვლილება ისე, რომ ფოტოებში არსებული მონაცემები გამოისახოს.

პასუხი #1

დემო ეს არის HTML ხაზის სხრილით

<div *ngFor="let item of items | customPipe : filter" class="card">
    <div class="data">{{item.name}}</div>
</div>

კომპონენტში შექმენით ფილტრის მნიშვნელობა როგორც საწყისი 'ყველა'

filter='All'

ნიშნავს სიაში თითოეულ li-ზე კლიკზე მეთოდის მიწოდებას

<ul>
   <li class="value"(click)="onChange(item.value)" [value]="item.value"><a href="">{{item.value}}</a></li>
</ul>

კომპონენტში

onChange(value){
  this.filter=value;
}

ეს არის წყვეტის მაგალითი

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
  name: 'customPipe'
})

export class CustomPipe implements PipeTransform {
  transform(row: any[],filter:string): any {
      return row.filter(x=>filter=='All' || x.value==filter);       
  }
}