@@ -2,19 +2,15 @@ import {
22 ChangeDetectionStrategy ,
33 Component ,
44 computed ,
5+ effect ,
56 inject ,
67 linkedSignal ,
8+ model ,
79 OnDestroy ,
810 OnInit ,
911 signal
1012} from '@angular/core' ;
11- import {
12- updateFormGroupWithValue ,
13- XtBaseModel ,
14- XtComponentModel ,
15- XtMessageHandler ,
16- XtRenderComponent
17- } from 'xt-components' ;
13+ import { updateFormGroupWithValue , XtBaseModel , XtMessageHandler , XtRenderComponent } from 'xt-components' ;
1814import { FormBuilder , FormGroup , PristineChangeEvent , ReactiveFormsModule } from '@angular/forms' ;
1915import { ManagedData } from 'xt-type' ;
2016import { Tab , TabList , TabPanel , TabPanels , Tabs } from 'primeng/tabs' ;
@@ -42,8 +38,6 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
4238
4339 editForm = signal < FormGroup > ( this . formBuilder . group ( { editor : this . formBuilder . group ( { } ) } ) ) ;
4440
45- selectedEntity = signal < T | null > ( null ) ;
46-
4741 canEdit = computed ( ( ) => {
4842 if ( this . selectedEntity ( ) != null )
4943 return true ;
@@ -64,12 +58,20 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
6458 deleting = signal ( false ) ;
6559 updating = signal ( false ) ;
6660
61+ selectedEntity = model < any > ( ) ;
62+
6763 listModel = new XtBaseModel < any > ( ) ;
6864
65+ selectedEntityChanged = effect ( ( ) => {
66+ const selected = this . selectedEntity ( ) ;
67+ this . updateEditForm ( ) ;
68+ } ) ;
69+
6970 private subscriptions = new Subscription ( ) ;
7071
7172 constructor ( ) {
7273 super ( ) ;
74+ this . listModel . valueSelected = this . selectedEntity ;
7375 }
7476
7577 override ngOnInit ( ) {
@@ -96,16 +98,6 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
9698 }
9799 }
98100
99- listModelChanged ( $event : any ) {
100- const newValue = $event as XtComponentModel ;
101- if ( newValue ?. valueSelected != null ) {
102- newValue ?. valueSelected . subscribe ( selected => {
103- this . selectedEntity . set ( selected ) ;
104- this . updateEditForm ( ) ;
105- } ) ;
106- }
107- }
108-
109101 updateEditForm ( ) {
110102 const entity = this . selectedEntity ( ) ;
111103 const form = this . formBuilder . group ( { } , { updateOn : 'change' } ) ;
@@ -126,7 +118,7 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
126118 this . saving . set ( true ) ;
127119 const savedValue = await this . safeFindStore ( ) . storeEntity ( toSave ) ;
128120 this . selectedEntity . set ( savedValue ) ;
129- this . updateEditForm ( ) ;
121+ // this.updateEditForm();
130122 this . canSave . set ( false ) ;
131123 this . viewMode . set ( "list" ) ;
132124 } catch ( error ) {
@@ -172,7 +164,7 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
172164 if ( deleted ) {
173165 this . selectedEntity . set ( null ) ;
174166 this . viewMode . set ( "list" ) ;
175- this . updateEditForm ( ) ;
167+ // this.updateEditForm();
176168 }
177169 }
178170
@@ -181,7 +173,7 @@ export class ListDetailsComponent<T extends ManagedData> extends AbstractDcWorkf
181173 this . newing . set ( true ) ;
182174 const newOne = await this . safeFindStore ( ) . storeEntity ( { } as T ) ;
183175 this . selectedEntity . set ( newOne ) ;
184- this . updateEditForm ( ) ;
176+ // this.updateEditForm();
185177 this . viewMode . set ( "edit" ) ;
186178
187179 } catch ( error ) {
0 commit comments