1
1
import { AsyncPipe } from '@angular/common' ;
2
2
import { ChangeDetectionStrategy , Component , inject , input , output , signal } from '@angular/core' ;
3
+ import { toObservable } from '@angular/core/rxjs-interop' ;
3
4
import {
4
5
ItemFields ,
5
6
ItemListOptions ,
@@ -13,7 +14,7 @@ import {
13
14
import { ItemsClient } from '@grpc/spec.pbsc' ;
14
15
import { LanguageService } from '@services/language' ;
15
16
import { EMPTY , Observable } from 'rxjs' ;
16
- import { catchError , map , tap } from 'rxjs/operators' ;
17
+ import { catchError , map , switchMap , tap } from 'rxjs/operators' ;
17
18
18
19
import { ToastsService } from '../../../../../toasts/toasts.service' ;
19
20
@@ -34,36 +35,37 @@ export class CarsSelectEngineTreeItemComponent {
34
35
35
36
protected readonly open = signal ( false ) ;
36
37
protected readonly loading = signal ( false ) ;
37
- protected readonly childs$ : Observable < ItemParent [ ] > = this . #itemsClient
38
- . getItemParents (
39
- new ItemParentsRequest ( {
40
- fields : new ItemParentFields ( {
41
- item : new ItemFields ( {
42
- childsCount : true ,
43
- nameHtml : true ,
38
+ protected readonly childs$ : Observable < ItemParent [ ] > = toObservable ( this . item ) . pipe (
39
+ switchMap ( ( item ) =>
40
+ this . #itemsClient. getItemParents (
41
+ new ItemParentsRequest ( {
42
+ fields : new ItemParentFields ( {
43
+ item : new ItemFields ( {
44
+ childsCount : true ,
45
+ nameHtml : true ,
46
+ } ) ,
44
47
} ) ,
45
- } ) ,
46
- language : this . #languageService. language ,
47
- limit : 500 ,
48
- options : new ItemParentListOptions ( {
49
- item : new ItemListOptions ( {
50
- typeId : ItemType . ITEM_TYPE_ENGINE ,
48
+ language : this . #languageService. language ,
49
+ limit : 500 ,
50
+ options : new ItemParentListOptions ( {
51
+ item : new ItemListOptions ( {
52
+ typeId : ItemType . ITEM_TYPE_ENGINE ,
53
+ } ) ,
54
+ parentId : item . itemId ,
51
55
} ) ,
52
- parentId : this . item ( ) . itemId ,
56
+ order : ItemParentsRequest . Order . AUTO ,
53
57
} ) ,
54
- order : ItemParentsRequest . Order . AUTO ,
55
- } ) ,
56
- )
57
- . pipe (
58
- catchError ( ( error : unknown ) => {
59
- this . #toastService. handleError ( error ) ;
60
- this . loading . set ( false ) ;
58
+ ) ,
59
+ ) ,
60
+ catchError ( ( error : unknown ) => {
61
+ this . #toastService. handleError ( error ) ;
62
+ this . loading . set ( false ) ;
61
63
62
- return EMPTY ;
63
- } ) ,
64
- tap ( ( ) => this . loading . set ( false ) ) ,
65
- map ( ( response ) => response . items || [ ] ) ,
66
- ) ;
64
+ return EMPTY ;
65
+ } ) ,
66
+ tap ( ( ) => this . loading . set ( false ) ) ,
67
+ map ( ( response ) => response . items || [ ] ) ,
68
+ ) ;
67
69
68
70
protected selectEngine ( engineId : string ) {
69
71
this . selected . emit ( engineId ) ;
0 commit comments