Size: a a a

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

2019 October 03

O

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

J

Joseph in Angular - русскоговорящее сообщество
Хотел написать ngAfterViewInit подумал и написал AfterViewChecked гг
источник

СК

Саша Корбут in Angular - русскоговорящее сообщество
посоветуйте пожалуйста ангуляр либу для написания админки
источник

AB

Arthur Bobrovskih in Angular - русскоговорящее сообщество
посмотрите здесь есть готовый пример
Tree with checkboxes
https://material.angular.io/components/tree/examples
источник

O

One in Angular - русскоговорящее сообщество
Arthur Bobrovskih
посмотрите здесь есть готовый пример
Tree with checkboxes
https://material.angular.io/components/tree/examples
Спасибо!
источник

AB

Arthur Bobrovskih in Angular - русскоговорящее сообщество
Саша Корбут
посоветуйте пожалуйста ангуляр либу для написания админки
ngx-bootstrap / material angular
источник

J

Joseph in Angular - русскоговорящее сообщество
А насколько кошерно засовывать Observable<Event> в Output
источник

AB

Arthur Bobrovskih in Angular - русскоговорящее сообщество
Joseph
А насколько кошерно засовывать Observable<Event> в Output
такое  ?
@Output() change = new EventEmitter<Observable<Event>>();
источник

ГР

Глеб Рябцев in Angular - русскоговорящее сообщество
Зачем так сложно? EventEmitter же сам в основе Observable?
источник

J

Joseph in Angular - русскоговорящее сообщество
Arthur Bobrovskih
такое  ?
@Output() change = new EventEmitter<Observable<Event>>();
хочу прям наружу кинуть значения из потока

  this.virtualScroll
     .elementScrolled()
     .pipe(debounceTime(400))
     .subscribe(e => {
       const scrollPosition = this.virtualScroll.getOffsetToRenderedContentStart();

       console.log(scrollPosition, e);
     });


отсюда сразу в Output что бы подписки не делать
источник

J

Joseph in Angular - русскоговорящее сообщество
@Output() readonly scrollPosition: Observable<number> = ... и то поток который выше
источник

J

Joseph in Angular - русскоговорящее сообщество
Глеб Рябцев
Зачем так сложно? EventEmitter же сам в основе Observable?
Именно
источник

AB

Arthur Bobrovskih in Angular - русскоговорящее сообщество
Joseph
хочу прям наружу кинуть значения из потока

  this.virtualScroll
     .elementScrolled()
     .pipe(debounceTime(400))
     .subscribe(e => {
       const scrollPosition = this.virtualScroll.getOffsetToRenderedContentStart();

       console.log(scrollPosition, e);
     });


отсюда сразу в Output что бы подписки не делать
может так сработает (не пробовал)
@Output() change = new Subject();

ngAfterViewInit() {
   this.change = this.virtualScroll
       .elementScrolled()
       .pipe(debounceTime(400))
   );
}
источник

J

Joseph in Angular - русскоговорящее сообщество
Arthur Bobrovskih
может так сработает (не пробовал)
@Output() change = new Subject();

ngAfterViewInit() {
   this.change = this.virtualScroll
       .elementScrolled()
       .pipe(debounceTime(400))
   );
}
Я хотел сделать все тоже самое только на Observable , просто на сколько это нормальный кейс
источник

ГЩ

Глеб Щукин in Angular - русскоговорящее сообщество
подскажите по фильтрации данных.
есть main компонент, в котором есть условная data.
в этом main компонете есть дочерние компоненты фильтров filterX, filterY... filterZ
вот я передал в filterX data, он мне отдал обратно уже отфильрованную data. а как мне контролировать текущее состояние этой data, что бы откатиться к неотфильтрованной. и как контролировать что нужно откатиться к отфильтрованной только по filterY (к примеру)...
источник

AB

Arthur Bobrovskih in Angular - русскоговорящее сообщество
Joseph
Я хотел сделать все тоже самое только на Observable , просто на сколько это нормальный кейс
не уверен что после присвоения переподпишется шаблон заного, надо проверять .. )
источник

J

Joseph in Angular - русскоговорящее сообщество
Arthur Bobrovskih
не уверен что после присвоения переподпишется шаблон заного, надо проверять .. )
сейчас все узнаем )
источник

Вキ

Вертихвост キバ in Angular - русскоговорящее сообщество
D_d Tch
@andriisiuta сделал так

combineLatest(
 this.store.select(selectRanges),
 this.store.select(selectOccupations),
 this.store.select(selectCountries),
 this.store.select(selectBanks),
).subscribe(([ranges, occupations, countries, banks]) => {
 console.log(1)
 console.log(ranges, occupations, countries, banks);
});


но проблема в том что сабскрайб тригерится 4 раза. как этого избежать?
Чтобы не писать подобной штуки с rxjs операторами, можно воспользоваться кастомным селектором:
export type SelectorMap<State, T> = {
 [P in keyof T]: Selector<State, T[P]>;
};
export type StateMap<T> = {
 [P in keyof T]: T[P];
}
export function createMapSelector<State, T>(
 selectorMap: SelectorMap<State, T>
): Selector<State, StateMap<T>> {
 let props = Object.entries(selectorMap);
 const selectors = props.map(([_, s]) => s).reverse();
 return createSelector.call(this, ...selectors, (...args) => {
   const entries = props.map(([key], i) => [key, args[i]]);
   return Object.fromEntries(entries);
 });
}
источник

Вキ

Вертихвост キバ in Angular - русскоговорящее сообщество
Это на вскорую руку, поэтому не очень чисто, и уверен, что можно нагуглить реализацию получше. Но зато позволяет делать вот так:
const myFooBarSelector = 
 createMapSelector({
   foo: selectFooBar,
   bar: selectFooFoo
 });

this.store.pipe(
 select(myFooBarSelector)
);
источник

DT

D_d Tch in Angular - русскоговорящее сообщество
Очень толковый подход
источник