Size: a a a

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

2019 September 23

:

: : MMS : : in Angular - русскоговорящее сообщество
всем приве! кто юзает drag&drop PrimeNG. проблема с работой dragLeave. Навожу на элемент и срабатывает leave, хотя я не убирал курсор
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
почему-то ругается на контекст this
  The 'this' context of type 'void' is not assignable to method's 'this' of type 'Observable<{}>'
покажите код компонента целиком, на стекблиц
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
покажите код компонента целиком, на стекблиц
источник

BO

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

LT

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

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
поместил код перед конструктором, теперь совсем посыпалось
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Пришел к такому варианту:
   this.allItems$ = this.route.parent.params
     .pipe(
       first(),
       map(params => +params['id']),
       switchMap(id => this.journalService.getJournalClientItems(id)),
       switchMap(items => merge(...items.map(item => this.clientsService.getClientById(item.worker_id)
         .pipe(
           tap(client => item['j_name'] = client.first_name),
           mapTo(item),
         )
       )))
     );

Ругается на merge (типа устаревший оператор)
error TS2339: Property 'map' does not exist on type 'Journal'
как раз в этой строке: switchMap(items => merge(...items.map(item => this.clientsService.getClientById(item.worker_id)
источник

GK

Georgii Klubnikov in Angular - русскоговорящее сообщество
Leonard Tkachev
Пришел к такому варианту:
   this.allItems$ = this.route.parent.params
     .pipe(
       first(),
       map(params => +params['id']),
       switchMap(id => this.journalService.getJournalClientItems(id)),
       switchMap(items => merge(...items.map(item => this.clientsService.getClientById(item.worker_id)
         .pipe(
           tap(client => item['j_name'] = client.first_name),
           mapTo(item),
         )
       )))
     );

Ругается на merge (типа устаревший оператор)
error TS2339: Property 'map' does not exist on type 'Journal'
как раз в этой строке: switchMap(items => merge(...items.map(item => this.clientsService.getClientById(item.worker_id)
ну очевидно что Journal у вас не массив
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Georgii Klubnikov
ну очевидно что Journal у вас не массив
allItems$: Observable<Journal[]>;
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Georgii Klubnikov
ну очевидно что Journal у вас не массив
все же проблема с оператором merge:
ERROR TypeError: You provided 'function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); }' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

Печально, что маловато инфы по данной теме(
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
импортируйте merge из rxjs, а не из rxjs/operators
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
allItems$: Observable<Journal[]>;
дело не в этом типе, а в типе метода вашего сервиса, который (как вам кажется) должен возвращать массив, но вы там описали так, что он просто Journal возвращает
источник

GK

Georgii Klubnikov in Angular - русскоговорящее сообщество
Leonard Tkachev
allItems$: Observable<Journal[]>;
вот это проверяйте  какой тип на возврат  this.journalService.getJournalClientItems(id)
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Georgii Klubnikov
вот это проверяйте  какой тип на возврат  this.journalService.getJournalClientItems(id)
Да, действительно был просто Journal
Сейчас поправил на массив:
getJournalClientItems(id: number): Observable<Journal[]> {
   return this.get(journals?entity=client&id=${id});
 }

IDE скомпилила все без ошибок, а вот браузер в консольке пишет:
core.js:5847 ERROR TypeError: You provided 'function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); }' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
Да, действительно был просто Journal
Сейчас поправил на массив:
getJournalClientItems(id: number): Observable<Journal[]> {
   return this.get(journals?entity=client&id=${id});
 }

IDE скомпилила все без ошибок, а вот браузер в консольке пишет:
core.js:5847 ERROR TypeError: You provided 'function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); }' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
вы merge откуда импортируете?
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
вы merge откуда импортируете?
from 'rxjs/operators'
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
импортируйте merge из rxjs, а не из rxjs/operators
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
angular 8
источник

LT

Leonard Tkachev in Angular - русскоговорящее сообщество
Bayyr Oorjak
импортируйте merge из rxjs, а не из rxjs/operators
IDE пишет:
error TS2322: Type 'Observable<Journal>' is not assignable to type 'Observable<Journal[]>'.
     Type 'Journal' is missing the following properties from type 'Journal[]': length, pop, push, concat, and 26 more.

консоль браузера:
ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
источник

BO

Bayyr Oorjak in Angular - русскоговорящее сообщество
Leonard Tkachev
IDE пишет:
error TS2322: Type 'Observable<Journal>' is not assignable to type 'Observable<Journal[]>'.
     Type 'Journal' is missing the following properties from type 'Journal[]': length, pop, push, concat, and 26 more.

консоль браузера:
ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
верно, там неправильно было
  this.allItems$ = this.route.parent.params
 .pipe(
   first(),
   map(params => +params['id']),
   switchMap(id => this.journalService.getJournalClientItems(id)),
   switchMap(items => merge(...items.map(item => this.clientsService.getClientById(item.worker_id)
     .pipe(
       tap(client => item['j_name'] = client.first_name),
     )))
     .pipe(
       mapTo(items),
     )
   )
 );
источник