Size: a a a

Angular - русскоговорящее сообщество

2021 May 09

SC

Serega Carbon in Angular - русскоговорящее сообщество
подпишись, а потом отпишись)
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
а если заюзать BehaviorSubject и в него сетить данные, то можно юзать асинк пайпу и будет *ngFor = "let d of data | async" всё детектиться)
источник

В

Влад in Angular - русскоговорящее сообщество
именно так я и сделал, и все детектится, но перед выводом в *ngFor, мне нужно обработать данные, и после обработки уже не детектится
источник

V

Viktor in Angular - русскоговорящее сообщество
Ну асинк пайп под капотом дергает чендж детектор по моему. Поэтому и детектится
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
он дёргает только MarkForCheck
источник

V

Viktor in Angular - русскоговорящее сообщество
👍
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
не совсем понял, что значит, после обработки
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
так тебе нужно: data.next([...data.value, ...newData])
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
где data - это BehaviorSubject<YourType>()
источник

В

Влад in Angular - русскоговорящее сообщество
Я передаю в компонент
<app-category-single [categories]="this.MyService.categories | async"></app-category-single>

В инпуте получаю categories - и тут детектится.
Но, перед тем как вывести на экран эти категории, их нужно обработать,
Я в методе сортирую их, и кладу в переменную this.currentCategoriesList

И уже ее вывожу в цикле фор
источник

В

Влад in Angular - русскоговорящее сообщество
и тогда уже не детектится
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
поставь detectChanges после того, как совершишь сортировку
источник

В

Влад in Angular - русскоговорящее сообщество
а подскажите как это сделать
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
инжектишь в конструктор себе ChangeDetectorRef и вызываешь его метод
источник

В

Влад in Angular - русскоговорящее сообщество
сейчас попробую
источник

В

Влад in Angular - русскоговорящее сообщество
Я поместил в метод:
getCurrentCategoryList()
{
  this.ChangeDetectorRef.detectChanges();
  // ... тут сортировка
}

Не помогло, изменения не детектятся. Я правильно использовал?
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
// ... тут сортировка
this.ChangeDetectorRef.detectChanges();
источник

В

Влад in Angular - русскоговорящее сообщество
вконце метода тоже ничего не дало, вот метод полностью:
getCurrentCategoryList()
{
   for (let obj of this.categories['all']['type_1']) {
       if(obj.parent_id == this.parentId) {
           this.currentCategoriesList = [...this.currentCategoriesList, obj];
       }
   }
   
   this.currentCategoriesList.sort((a, b) => {
       if (a.order_id < b.order_id) return -1;
       else if (a.order_id > b.order_id) return 1;
       else return 0;
   });
   this.ChangeDetectorRef.detectChanges();
}
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
тебе нужно склонировать массив, который отсортировал
источник