Size: a a a

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

2021 March 05

VM

Vadim Malovaniy in Angular - русскоговорящее сообщество
Богдан
та нет проблема не в http, вот создал простой поток
rsp$: Observable<RspInterface[]> = of([{ref: '1', description: '1111'}] as RspInterface[]);
та же проблема
="(rsp$ | async) || [] " так чекни
источник

VM

Vlad Martyshev in Angular - русскоговорящее сообщество
А в материала типа есть проблемы с z индексами?
источник

Б

Богдан in Angular - русскоговорящее сообщество
Vadim Malovaniy
="(rsp$ | async) || [] " так чекни
спасибо, так работает, но выгдядит как костыль
источник

AI

Alex Inkin in Angular - русскоговорящее сообщество
Vlad Martyshev
А в материала типа есть проблемы с z индексами?
Не проверял. Я вообще с материалом стараюсь не сравнивать, у них адский API, как по мне, и внутренний код удручающий.
источник

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
Богдан
спасибо, так работает, но выгдядит как костыль
У вас скорее всего включен strictNullCheks в конфиге тайпскрипта, поэтому такую запись .subscribe(rsp => this.rsp = rsp) надо заменить на .subscribe(rsp => this.rsp = rsp || [])
источник

VM

Vlad Martyshev in Angular - русскоговорящее сообщество
Alex Inkin
Не проверял. Я вообще с материалом стараюсь не сравнивать, у них адский API, как по мне, и внутренний код удручающий.
Ну тут соглашусь. Ну я дочитал статью до бонус секции, смотрю что этот рут еще много других задач решает
источник

VM

Vadim Malovaniy in Angular - русскоговорящее сообщество
Богдан
спасибо, так работает, но выгдядит как костыль
в их примере нужно посмотреть что в people$
источник

Б

Богдан in Angular - русскоговорящее сообщество
Сергей Гурко
У вас скорее всего включен strictNullCheks в конфиге тайпскрипта, поэтому такую запись .subscribe(rsp => this.rsp = rsp) надо заменить на .subscribe(rsp => this.rsp = rsp || [])
Если this.rsp проинициализировать при объявлении rsp = []`то тогда можно в подписке уже не делать || []`
источник

Б

Богдан in Angular - русскоговорящее сообщество
Vadim Malovaniy
в их примере нужно посмотреть что в people$
ну я же сразу посмотрел перед тем как тут вопрос задавать, в том то и вопрос что у них все вроде ок
people$: Observable<Person[]>;
   selectedPersonId = '5a15b13c36e7a7f00cf0d7cb';

   constructor(private dataService: DataService) {
   }

   ngOnInit() {
       this.people$ = this.dataService.getPeople();
   }
источник

Б

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

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
Богдан
Если this.rsp проинициализировать при объявлении rsp = []`то тогда можно в подписке уже не делать || []`
Или так. Просто тайпскрипт при включенном strictNullCheks заставляет вас явно делать проверки что значение не может быть null либо в типах еще указывать | null, например в библиотечке ng-select для инпута указан тип any[] , а при strictNullCheks должен быть any[] | null тогда не надо делать дополнительных проверок
источник

Б

Богдан in Angular - русскоговорящее сообщество
Сергей Гурко
Или так. Просто тайпскрипт при включенном strictNullCheks заставляет вас явно делать проверки что значение не может быть null либо в типах еще указывать | null, например в библиотечке ng-select для инпута указан тип any[] , а при strictNullCheks должен быть any[] | null тогда не надо делать дополнительных проверок
ну а как с обзервалами можно тогда это обойти? только так
[items]="(rsp$ | async) || []"
?
источник

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
А можете показать что возвращает this.handleError как Вадим написал? Скорее всего там надо пустой массив возвращать
источник

Б

Богдан in Angular - русскоговорящее сообщество
 private handleError(error: HttpErrorResponse): Observable<never> {
   if (error.error instanceof ErrorEvent) {
     console.error('An error occurred:', error.error.message);
   } else {
     console.error(
       `Backend returned code ${error.status}, ` +
       `body was: ${error.error}`);
   }
   return throwError('Something bad happened; please try again later.');
 }
источник

Б

Богдан in Angular - русскоговорящее сообщество
ну по идеи там обзервабл должен бросить исключение и тогда до подписки вообще не должно ничего доходить
источник

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
Попробуйте там поменять типа на Observable<RspInterface[]> и вместо throw вернуть пустой массив
источник

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
Богдан
ну по идеи там обзервабл должен бросить исключение и тогда до подписки вообще не должно ничего доходить
Тут дело не в подписке, а в этапе транспайла и статической типизации самим тайпскриптом. Потому как тайпскрипту все равно что там в рантайме происходит. Все проверки типов срабатывают только на этапе транспайла
источник

Б

Богдан in Angular - русскоговорящее сообщество
Сергей Гурко
Тут дело не в подписке, а в этапе транспайла и статической типизации самим тайпскриптом. Потому как тайпскрипту все равно что там в рантайме происходит. Все проверки типов срабатывают только на этапе транспайла
я уже закоментировал исключение, но все-таже ошибка
источник

Б

Богдан in Angular - русскоговорящее сообщество
тут даже если не с http, а просто через of создавать обзервабл та же ошибка
источник

СГ

Сергей Гурко... in Angular - русскоговорящее сообщество
Богдан
тут даже если не с http, а просто через of создавать обзервабл та же ошибка
Попробуйте обернуть ваш ng-select в <ng-container *ngIf="rsp$ | async as rsp"> и уже потом в сам <ng-select [items]="rsp"> передавать
источник