refactor: migra a control flow nativo (@if/@for/@switch) y elimina CommonModule
This commit is contained in:
@@ -22,10 +22,12 @@ Construir: `nx build ui` · Lint: `nx lint ui`
|
||||
| NgModules | 41 → 4 (sólo quedan los que aportan providers: `icon-registry`, `loaders`, `router-store`, `scroll-to`) |
|
||||
| Componentes | 70, **todos** con `ChangeDetectionStrategy.OnPush` |
|
||||
| Decoradores | 0 restantes: 460 `input()`, 6 `model()`, 20 `output()`, 8 `viewChild()`, 2 `viewChildren()`, 17 `contentChild()`, 6 `contentChildren()` |
|
||||
| Control flow | `*ngIf`/`*ngFor`/`*ngSwitch` → `@if`/`@for`/`@switch` (110 `@if`, 26 `@for`, 3 `@switch`). Ya no se importa ninguna directiva de `CommonModule` |
|
||||
|
||||
Se usaron las migraciones oficiales de Angular (`@angular/core:standalone`,
|
||||
`signal-input-migration`, `output-migration`, `signal-queries-migration`) y se
|
||||
resolvió a mano lo que no cubren.
|
||||
`signal-input-migration`, `output-migration`, `signal-queries-migration`,
|
||||
`control-flow-migration`, `cleanup-unused-imports`) y se resolvió a mano lo que
|
||||
no cubren.
|
||||
|
||||
## Decisiones que cambian comportamiento
|
||||
|
||||
@@ -79,6 +81,17 @@ Mantiene el runtime idéntico al original. Se pueden eliminar migrando a
|
||||
`truncate : (33 || …)`, así que el fallback nunca se aplicaba. Ahora está
|
||||
parentizado como se pretendía.
|
||||
|
||||
**8. Los 3 selects se convirtieron a control flow a mano.**
|
||||
La migración automática se rindió con ellos: tenían un `*ngIf ... else` que
|
||||
apuntaba a un `<ng-template>` con un `[ngSwitch]` dentro. Al reescribirlos hubo
|
||||
que renombrar plantillas duplicadas (`#defaultSelected` aparecía dos veces en
|
||||
ramas distintas del switch) a `#defaultSelectedFill`/`#defaultSelectedOutline`,
|
||||
y en select-period `#defaultOption` → `#defaultMonthOption`/`#defaultYearOption`.
|
||||
Los `*ngFor` sin `trackBy` pasaron a `track <item>`, que es lo que hacía `ngFor`
|
||||
por defecto. En data-grid y select-carousel la migración generó
|
||||
`track trackByFn(i, item)` pero esos `trackByFn` sólo declaran `index`: se
|
||||
corrigió la aridad a `track trackByFn(i)`.
|
||||
|
||||
## Colisiones de nombres en el barrel
|
||||
|
||||
El origen tiene símbolos duplicados. En `index.ts` gana el primero y el otro se
|
||||
@@ -104,7 +117,8 @@ omite (queda anotado en el fichero). Siguen siendo accesibles por ruta directa:
|
||||
- **`Sector`** vivía en `deale-saas/util/models` (lib de aplicación, fuera de alcance); se trajo la interfaz a `util/models`.
|
||||
- **ngrx 21 con Angular 22**: instalado con `--legacy-peer-deps` (aún no declara soporte para 22).
|
||||
- **Lint**: `nx lint ui` falla con avisos heredados del código original —
|
||||
`prefer-control-flow` (104: `*ngIf`/`*ngFor` en vez de `@if`/`@for`),
|
||||
`directive-selector` (40), `prefer-inject` (33), a11y y `no-unused-vars`.
|
||||
Nada bloquea el build. Hay migraciones oficiales para los dos primeros grupos:
|
||||
`nx g @angular/core:control-flow-migration` y `nx g @angular/core:inject-migration`.
|
||||
`prefer-inject` (51), `directive-selector` (46), `no-explicit-any` (35),
|
||||
`no-unused-expressions` (33), a11y (`click-events-have-key-events`,
|
||||
`interactive-supports-focus`, `label-has-associated-control`) y
|
||||
`no-unused-vars`. Nada bloquea el build. Para el primer grupo hay migración
|
||||
oficial: `nx g @angular/core:inject-migration`.
|
||||
|
||||
Reference in New Issue
Block a user