Как теперь я могу фильтровать данные по дате в Angular Typescript?

У меня есть бронирования, и я хочу получить все выполненные бронирования, которые прошли (бронирования, которые < даты сейчас)

Я попытался отфильтровать бронирования по атрибуту оформления заказа в соответствии с датой, но это не сработало, он всегда отображал весь мой список бронирований.

Это моя Reservation модель:

export class Reservation {
  id!: number;
  nb!: number;
  montantTotal!: number;
  user!: User;
  extra!: number;
  couponon!: number;
  nbrooms!: number;
  montantExtraRoom!: number
  dateCreated!: Date
  vol!: Vol;
  checkin!: Date;
  checkout!: Date;
  persones: Persone[] = [{
    titre:'',
    firstname:'',
    lastname:'',
    datebirth:'',
    nationality:'',
    passport:0,
    country:'',
    passworddateout:'',
  }]
}

И это мой компонент:

export class UserMybookingComponent implements OnInit {
  myres!: Reservation[]
  myDate = new Date();

  constructor(private reservationService: ReservationService, private datePipe: DatePipe ) { 

  }
  
  ngOnInit() {
    this.mybooking()
   
  }

  mybooking(){
    
    this.reservationService.mybook().subscribe(
      data => {this.myres=data;
        this.myres.filter(res => new Date(res.checkout) > this.myDate)
      }
      
    )
  }
}

this.myres = this.myres.filter(res => новая дата(res.checkout) > this.myDate); Вы забываете 'this.myres ='

Roma Ruzich 21.12.2022 16:41
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
57
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы хотите отобразить данные, попробуйте это

displayDate: any;

mybooking(){

this.reservationService.mybook().subscribe(
  data => {this.myres=data;
    this.myres.filter(res => new Date(res.checkout) > this.myDate)

 this.displayDate = res;
  }
  
)
}

поместите это в свой html-файл

{{displayDate?."index of the element you want to display goes here" | date:'fullDate'}}

чувак, я просто хочу отображать только те бронирования, которые завершены, а не сортировать их

hatem ghorbel 21.12.2022 15:38

вы использовали слово фильтр. Должен был сказать, что вы хотите отобразить данные, которые хранятся в res. Фильтр означает сортировку данных для получения значимой информации.

Luigi Woodhouse 21.12.2022 16:18

спасибо, бро, только сейчас заметил

hatem ghorbel 21.12.2022 17:03

пожалуйста, всегда используйте getTime() или valueOf() для точного сравнения дат (в миллисекундах)

new Date(res.checkout).getTime() > this.myDate.getTime()
Ответ принят как подходящий

Писать

this.myres = this.myres.filter(res => new Date(res.checkout) > this.myDate);

Вы забыли this.myres = ;

https://www.tutorialspoint.com/typescript/typescript_array_filter.htm

Другие вопросы по теме