Size: a a a

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

2020 May 06

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Arams Tomojans
а можно пнуть в нужную сторону?)
   this.aSub = this.authorService.create(this.form.value)
     .subscribe(
       () => {
         this.alertService.success('Автор Успешно Добавлен', {autoClose: true});
         this.form.reset();
         this.initForm();
         this.wl.fetchData();
       },
       error => {
         this.alertService.error(error.error.message, {autoClose: true});
       }
     )
После this.wl.fetchData прям сделать второй вызов может?
источник

AT

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

AT

Arams Tomojans in Angular - русскоговорящее сообщество
this.aSub = this.authorService.create(this.form.value)
     .subscribe(
       () => {
         this.alertService.success('Автор Успешно Добавлен', {autoClose: true});
         
         this.logService.createLog(newLog);
         this.form.reset();
         this.initForm();
         this.wl.fetchData();
       },
       error => {
         this.alertService.error(error.error.message, {autoClose: true});
       }
     )
источник

AT

Arams Tomojans in Angular - русскоговорящее сообщество
там где вызов this.logService.createLog(newLog);
источник

BV

Balandin Vitaliy in Angular - русскоговорящее сообщество
привет все.
хочу оптимизировать операцию и избавить от двух subscribe_ов.
Сейчас код выглядит следующим образом:
forkJoin([privateStorehouses$, commonStorehouses$]).subscribe(
     r => {
       this.storehouses = r[0].filter(x => x.IsActive && x.IsEnable);
       const outside = r[1].map(x => x.Storehouse);
       const grouped$ = from(outside).pipe(
         groupBy(s => s.OperatorId),
         mergeMap(g => g.pipe(toArray()))
       );
       grouped$.subscribe(g => {
         if (!this.outsideStorehouses) {
           this.outsideStorehouses = [];
         }
         this.outsideStorehouses.push(...g);
       });
     },
     err => {
       this.messageService.show(err);
     }
   );

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

AT

Arams Tomojans in Angular - русскоговорящее сообщество
вот я поэтому и решил сразу разобраться с этим вопросом))))
источник

НК

Никита Калинин... in Angular - русскоговорящее сообщество
Dmitry Check
Да, но можно просто забыть это сделать, вот в чём проблема. Хочется, чтобы он на этапе компиляции выбрасывал ошибку или что-то вроде этого
typescript не Ванга, ему надо декларировать чо ты хочешь, а он автоматом поймает ошибку...то что забыл  где-то реализовать метод, который в имплементированном инф-се есть
источник

AT

Arams Tomojans in Angular - русскоговорящее сообщество
хотя если подумать, мне подписка вторая не нужна, мне просто нужно понять как на успешном добавлении данных из первой подписки, вызвать метод который просто запихнет строку в бд
источник

G

Genady in Angular - русскоговорящее сообщество
Balandin Vitaliy
привет все.
хочу оптимизировать операцию и избавить от двух subscribe_ов.
Сейчас код выглядит следующим образом:
forkJoin([privateStorehouses$, commonStorehouses$]).subscribe(
     r => {
       this.storehouses = r[0].filter(x => x.IsActive && x.IsEnable);
       const outside = r[1].map(x => x.Storehouse);
       const grouped$ = from(outside).pipe(
         groupBy(s => s.OperatorId),
         mergeMap(g => g.pipe(toArray()))
       );
       grouped$.subscribe(g => {
         if (!this.outsideStorehouses) {
           this.outsideStorehouses = [];
         }
         this.outsideStorehouses.push(...g);
       });
     },
     err => {
       this.messageService.show(err);
     }
   );

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

BV

Balandin Vitaliy in Angular - русскоговорящее сообщество
Genady
В этом случае это не удачный пример, форк будет ждать оба результата, в этом нет смысла.
switchMap гораздо более оптимальнее подходит сюда.
спасибо за наводку ;)
источник

AT

Arams Tomojans in Angular - русскоговорящее сообщество
последний вопрос который все на места расставит.
если вызвать подряд
this.sub$ = this.create(log).subscribe();
this.sub$.unsubscribe();
стрим будет уничтожен?
источник

SV

Sla V in Angular - русскоговорящее сообщество
Arams Tomojans
последний вопрос который все на места расставит.
если вызвать подряд
this.sub$ = this.create(log).subscribe();
this.sub$.unsubscribe();
стрим будет уничтожен?
Да
источник

AT

Arams Tomojans in Angular - русскоговорящее сообщество
тогда все проще) и вторая подписка не нужна даже). Благодарю за ответы!!!
источник

DC

Dmitry Check in Angular - русскоговорящее сообщество
Dmitry Check
Здравствуйте. Существует ли механизм, при котором можно явно определить интерфейс, который должен реализовывать родительский компонент при использовании дочернего. Иными словами, если я добавляю компонент, для которого обязательно использовать какую-либо функцию со стороны родителя, то родительский компонент обязан её имплементировать?
Нашёл подходящее для себя решение. В дочернем компоненте определяем Input с интерфейсом, который необходимо реализовать родительскому компоненту и передаём туда сам родительский компонент посредством this. В дочернем компоненте при инициализации делаем проверку на наличие требуемых методов if (typeof this.parent.someMethod !== "undefined")
источник

MA

Maxim Afanasev in Angular - русскоговорящее сообщество
Dmitry Check
Нашёл подходящее для себя решение. В дочернем компоненте определяем Input с интерфейсом, который необходимо реализовать родительскому компоненту и передаём туда сам родительский компонент посредством this. В дочернем компоненте при инициализации делаем проверку на наличие требуемых методов if (typeof this.parent.someMethod !== "undefined")
Интересно, что у вас за задача такая, что вам обычный Output не подошёл?
источник

DC

Dmitry Check in Angular - русскоговорящее сообщество
Maxim Afanasev
Интересно, что у вас за задача такая, что вам обычный Output не подошёл?
Я работаю в команде и такой механизм хочу подключать на переиспользуемые компоненты. Чтобы в момент, когда кто-то захочет добавить его в свой шаблон, он не забыл реализовать на родителе нужное поведение.
источник

G

Genady in Angular - русскоговорящее сообщество
Dmitry Check
Я работаю в команде и такой механизм хочу подключать на переиспользуемые компоненты. Чтобы в момент, когда кто-то захочет добавить его в свой шаблон, он не забыл реализовать на родителе нужное поведение.
Можно пример (use case)?
источник

MA

Maxim Afanasev in Angular - русскоговорящее сообщество
Интересно узнать кейс, в котором нужно (и обязательно) вызывать метод родителя и нельзя обойтись Output'ом.
источник

EB

Eldar Babaev in Angular - русскоговорящее сообщество
react way
источник

DC

Dmitry Check in Angular - русскоговорящее сообщество
Maxim Afanasev
Интересно узнать кейс, в котором нужно (и обязательно) вызывать метод родителя и нельзя обойтись Output'ом.
Можно обойтись, бесспорно, но он всё же не вызывает эти методы, а проверяет их наличие, только и всего. А пример банальный. Есть модалка, открытием/закрытием которой должен управлять родитель. И если не реализовать соотвествующие методы, она просто напросто не откроется/закроется
источник