Size: a a a

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

2020 May 15

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
let url = "https://graph.facebook.com/v6.0/me/adaccounts";
      return this._http.get(url+token);

вот такое GetDataOfAds возвращает . Запросы все уходят
Ошибка точно в этом месте вообще?
источник

BK

Bogdan Khamitov in Angular - русскоговорящее сообщество
Bogdan Khamitov
Привет. Есть кусок кода  , он берет данные с сервиса .  Подскажите как можно сделать его не в цикле , а по-нормальному . То есть , чтобы можно было отследить , когда все запросы выполнятся.

for(let i = 0; i < Object.keys(dbData).length; i++){
 this.facebookService.getDataOfAds(dbData[i].token)
 .toPromise()
 .then(response => {
 })
 .catch((err:any) => {
 console.log(err);
 });
}
Когда я в цикле делал запросы , то все работало норм. Если возвращалась ошибка , то .catch я ее обрабатывал и все ок было
источник

AB

Andrew Baranow in Angular - русскоговорящее сообщество
Привет. В 9 верси с primeNg у меня ошибка. Гуглил. Ставил библиотеки которые гугл советовал.
Но остается
ERROR in The target entry-point "primeng" has missing dependencies:
- chart.js
https://prnt.sc/sh8ygp
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
Когда я в цикле делал запросы , то все работало норм. Если возвращалась ошибка , то .catch я ее обрабатывал и все ок было
console.log(Object.keys(dbData)
   .map(key => this
       .getData(dbData[key])
       .pipe(
           catchError(error => of('something goes wrong'))
       ))

Что вернёт?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
все равно выдает ошибку ,когда .subcsribe делаю

                            forkJoin(Object.keys(dbData)
                                    .map((key) => {
                                      this.facebookService.getDataOfAds(dbData[key].token)
                                      .pipe(catchError(error => of('something goes wrong')))
                                     
                                    })).subscribe(
                                       returnesponse => {
                                           console.log('success',returnesponse);
                                       },
                                       error => {
                                           console.log('error',error);
                                           
                                       });
Вот тут поставьте на метод from breakpoint и посмотрите откуда он туда попадет
источник

BK

Bogdan Khamitov in Angular - русскоговорящее сообщество
Oleg Safonov
Вот тут поставьте на метод from breakpoint и посмотрите откуда он туда попадет
Подскажите как правильно это сделать , я просто в rxjs очень плох
источник

П

Пёß Цифроwого Сопрот... in Angular - русскоговорящее сообщество
а кто-нибудь значет почему ребята из Ангулар перестали генерировать .spec файлы для модулей?
а то у меня теперь половина модулей так, половина по-другому
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
Подскажите как правильно это сделать , я просто в rxjs очень плох
 return this._http.get(url+token);

http - это angular http client?
источник

BK

Bogdan Khamitov in Angular - русскоговорящее сообщество
Да
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
вообще странно. Может помимо этих изменений ещё какие то попали?
Метод где forkJoin вызывается ничего не должен возвращать? Как он вызывается?
источник

BK

Bogdan Khamitov in Angular - русскоговорящее сообщество
Oleg Safonov
вообще странно. Может помимо этих изменений ещё какие то попали?
Метод где forkJoin вызывается ничего не должен возвращать? Как он вызывается?
Должен возвращать значение.


                                               getAllDataFromDb(){  
                                                 return this.db.getAllDataFromDb().toPromise().then(dbData => {
                                                   forkJoin(Object.keys(dbData)
                                                     .map((key) => {
                                                       this.facebookService.getDataOfAds(dbData[key].token)
                                                       .pipe(catchError(error => of('something goes wrong')))
                                                       .toPromise()
                                                       .then(response => {
                                                         console.log("304",response);
                                                         this.ls.addItem(response,dbData[key]);
                                                       })
                                                       .catch((err:any) => {
                                                         console.log(err);
                                                       });
                                                     }))
                                                   .subscribe(() =>
                                                     console.log("success")
                                                     );  
                                                   if(Object.keys(dbData).length == 0){
                                                     this.data = [];
                                                     localStorage.removeItem("data");
                                                   }
                                                 })
                                                 //если ошибка
                                                 .catch((err:any) => {
                                                   console.log(err);
                                                 });  
                                               }
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
ну тогда понятно
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
return forkJoin(Object.keys(dbData)
                                    .map((key) => {
                                      this.facebookService.getDataOfAds(dbData[key].token)
                                      .pipe(catchError(error => of('something goes wrong')))
                                     
                                    }))


Вот так
источник

🇻

🇻 in Angular - русскоговорящее сообщество
Привет, помогите пожалуйста, я нуб в angular
Делаю тестовое задание на позицию js разработчика, нужно сделать на angular + ionic. Вот разбираюсь с ними

У меня есть кнопка на странице, которая вызывает showFilters и отображает ionic popover

import { PopoverController } from 'ionic-angular';
import { Filters } from '../filters/filters';
@Component(...)
export class HotelsPage {
   start: number;
   end: number;
   constructor(private popoverCtrl: PopoverController) {}
   async showFilters(ev: Event) {
       const popover = await this.popoverCtrl.create(Filters);
       return await popover.present({
           ev: ev
       });
   }
}
Filters это обычный компонент
@Component(...)
export class Filters {
   start: number;
   end: number;
   constructor() {}
}

Как мне получить данные (start, end) из class Filters ?
Есть вариант повешать событие на закрытие поповера, но я хочу что бы все взаимодействия были реактивныеми, что бы данные перетекали без закрытия
popover.onDidDismiss(payload => {
   console.log(payload)
});
источник

BK

Bogdan Khamitov in Angular - русскоговорящее сообщество
Oleg Safonov
return forkJoin(Object.keys(dbData)
                                    .map((key) => {
                                      this.facebookService.getDataOfAds(dbData[key].token)
                                      .pipe(catchError(error => of('something goes wrong')))
                                     
                                    }))


Вот так
остальное все убрать из метода , чтобы ничего не возвращалось , только чтобы forkJoin отрабатывал ?
источник

🇻

🇻 in Angular - русскоговорящее сообщество
🇻
Привет, помогите пожалуйста, я нуб в angular
Делаю тестовое задание на позицию js разработчика, нужно сделать на angular + ionic. Вот разбираюсь с ними

У меня есть кнопка на странице, которая вызывает showFilters и отображает ionic popover

import { PopoverController } from 'ionic-angular';
import { Filters } from '../filters/filters';
@Component(...)
export class HotelsPage {
   start: number;
   end: number;
   constructor(private popoverCtrl: PopoverController) {}
   async showFilters(ev: Event) {
       const popover = await this.popoverCtrl.create(Filters);
       return await popover.present({
           ev: ev
       });
   }
}
Filters это обычный компонент
@Component(...)
export class Filters {
   start: number;
   end: number;
   constructor() {}
}

Как мне получить данные (start, end) из class Filters ?
Есть вариант повешать событие на закрытие поповера, но я хочу что бы все взаимодействия были реактивныеми, что бы данные перетекали без закрытия
popover.onDidDismiss(payload => {
   console.log(payload)
});
на стековерфлоу советуют "create a global service, and inject it to the two components passing data through the service" Но при это мне вручную придется отслеживать состояние popover'а ? реактивности так не добиться?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
остальное все убрать из метода , чтобы ничего не возвращалось , только чтобы forkJoin отрабатывал ?
а там какая логика ещё в subscribe должна быть?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
остальное все убрать из метода , чтобы ничего не возвращалось , только чтобы forkJoin отрабатывал ?
Если есть какая то логика то сделать её в pipe после forkJoin

return forkJoin().pipe(map(data => handle(data)))

Где handle - это логика
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
остальное все убрать из метода , чтобы ничего не возвращалось , только чтобы forkJoin отрабатывал ?
стойте,  уже сам запутался
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Bogdan Khamitov
Должен возвращать значение.


                                               getAllDataFromDb(){  
                                                 return this.db.getAllDataFromDb().toPromise().then(dbData => {
                                                   forkJoin(Object.keys(dbData)
                                                     .map((key) => {
                                                       this.facebookService.getDataOfAds(dbData[key].token)
                                                       .pipe(catchError(error => of('something goes wrong')))
                                                       .toPromise()
                                                       .then(response => {
                                                         console.log("304",response);
                                                         this.ls.addItem(response,dbData[key]);
                                                       })
                                                       .catch((err:any) => {
                                                         console.log(err);
                                                       });
                                                     }))
                                                   .subscribe(() =>
                                                     console.log("success")
                                                     );  
                                                   if(Object.keys(dbData).length == 0){
                                                     this.data = [];
                                                     localStorage.removeItem("data");
                                                   }
                                                 })
                                                 //если ошибка
                                                 .catch((err:any) => {
                                                   console.log(err);
                                                 });  
                                               }
Разбейте на части его, это жесть какая то вообще.
Не нужно превращать всё в promise используя toPromise, работайте с observable
источник