wellkilo opened a new pull request, #607: URL: https://github.com/apache/fineract-backoffice-ui/pull/607
## What and why This is the first per-form change requested by #571, starting with the largest form. `loan-product-form` had 38 `[(ngModel)]` bindings whose target was `product().field`. `NgModel` therefore wrote into the object held by the signal without changing the signal reference, so derived readers were not notified and the payload could silently drift from the rendered form. The bindings now use `[ngModel]` plus a typed `patchProduct(...)` handler that replaces the signal payload. Related dependent-field writes in the component, such as down-payment cleanup, income capitalisation, interest recalculation, and transaction-strategy filtering, follow the same signal path. Behaviour is preserved, but every write now notifies the signal. This does **not** close #571: it deliberately covers one form so the remaining forms can be reviewed and landed independently. ## Verification - `npm run lint` — passed - `npm run format:check` — passed - `npm run build` — passed; the pre-existing `header.component.ts` stylesheet budget warning remains - `npm test -- --watch=false` — 248 test files, 1528 tests passed - `npx playwright test e2e/functional-coverage.spec.ts --project=mocked --grep 'loan products'` — passed - New regression test triggers the real `ngModelChange` binding and asserts both the signal reference and `shortName` value change - No `[(ngModel)]="product().field"` bindings or direct `this.product().field = ...` writes remain in this component - Commit `1442d46` is signed and GitHub reports it as **Verified** The browser test uses mocks. No backend data or API contract changed, and the real-backend NG0100 check is not claimed as run in this PR. ## Screenshots Not applicable: this is a state-management fix with no intended visual change. ## AI assistance (optional) - Tool / model: OpenAI Codex - Harness / workflow: ECC `source-command-feature-dev`, repository guidance in `AGENTS.md`, local lint/build/unit/Playwright verification ## Checklist - [x] I did not hand-edit generated files under `src/app/api/`. - [x] New component or service code uses the adapter boundary in `src/app/core/adapters/` instead of direct browser globals or imperative third-party APIs. No new component or service was added. - [x] User-facing strings use translation keys. No user-facing strings were added. - [x] I added or updated tests appropriate to this change. - [x] UI workflow changes include suitable e2e coverage. The mocked browser flow verifies the form still loads and navigates; the signal notification itself is pinned by a focused unit test. - [x] Commits are signed — `1442d46` is Verified on GitHub. - [x] I followed the AI-assisted contributions guidance. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
