Size: a a a

2020 July 17

DG

Danil Gudz in Angular Kyiv
Алекс
в то же время
this.ds.data.splice(...) - не рендериться
this.ds.data = this.ds.data - рендериться
я тебе еще в самом начале скидывал ссылку на сорс код где должно быть ясно почему так работает, там в сеттере data идет this._data.next(...) который эмитит значение в обзервебле и поэтому таблица подхватывает новое значение и ререндерит
источник

DG

Danil Gudz in Angular Kyiv
ладно, я пожалуй больше писать не буду) тут два вывода: 1) нужно учить мат часть, 2) читать внимательно,
все ответы давно были даны, все объяснения написаны)
а то по 10 раз уныло описывать
источник

А

Алекс in Angular Kyiv
нУ ТО ТАК да, каждый роет как может, в любом случае спасибо.
Но вопроса было два, почему при изменении MatDataSource.data точно так же меняется и  arr в new MatTableDataSource(arr) - выяснили - потому что ссылка
И второй , почему не рендериться Вьюха когда меняешь  MatDataSource.data , кроме как через метод сonnect - ангуляр ниче не предлагает - но получается как то все равно не так, т.к. методу next() надо передать изменненный массив
источник

DG

Danil Gudz in Angular Kyiv
я это здесь уже все описывал что и почему
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
это делается через .data считал
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
сделал снаружи манипуляции
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
и закинул через .data = новый массив
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
const dataSource = new MatTableDataSource([1,2,3,4,5]);

function removeByIndex(ds: MatTableDataSource<any>, index: number) {
 const currentArray = ds.data;
 const newArray = [...currentArray] // скопировали
 newArray.splice(index, index);
 ds.data = newArray;
 // либо вместо трех строк одной:
 // const newArray = currentArray.filter((e,i) => i !== index);
}
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
если сильно интересно то просто можно залететь в сорцы
https://github.com/angular/components/blob/master/src/material/table/table-data-source.ts#L72
увидеть что на сеттере делается next
и твой компонент сам подхватит новый массив из внутреннего обзервебла
источник

DG

Danil Gudz in Angular Kyiv
Переслано от Danil Gudz
ну, я имею в виду mat-table компонент
источник

А

Алекс in Angular Kyiv
Danil Gudz
Переслано от Danil Gudz
const dataSource = new MatTableDataSource([1,2,3,4,5]);

function removeByIndex(ds: MatTableDataSource<any>, index: number) {
 const currentArray = ds.data;
 const newArray = [...currentArray] // скопировали
 newArray.splice(index, index);
 ds.data = newArray;
 // либо вместо трех строк одной:
 // const newArray = currentArray.filter((e,i) => i !== index);
}
не рендериться
источник

DG

Danil Gudz in Angular Kyiv
Алекс
не рендериться
источник

DG

Danil Gudz in Angular Kyiv
кто-то врет
источник

А

Алекс in Angular Kyiv
Спаибо , буду искать где налажал
источник

IF

Igor Filippov in Angular Kyiv
Как в from оператор прокинуть массив из обсервабла?
источник

DG

Danil Gudz in Angular Kyiv
а цель какая?
источник

AS

Alex S in Angular Kyiv
Igor Filippov
Как в from оператор прокинуть массив из обсервабла?
да вроде как обычно?
https://www.learnrxjs.io/learn-rxjs/operators/creation/from
from([1, 2, 3, 4, 5]);
источник

IF

Igor Filippov in Angular Kyiv
concat(of(value), from(valueFromObservable).pipe(concatMap - ну и пошло поехало дальше. Все расписывать нет смысла думаю
источник

IF

Igor Filippov in Angular Kyiv
Alex S
да вроде как обычно?
https://www.learnrxjs.io/learn-rxjs/operators/creation/from
from([1, 2, 3, 4, 5]);
Там же нет ответа на мой вопрос
источник

AS

Alex S in Angular Kyiv
а предыдущие шаги есть? до concat которые
источник