bug(MatExpansionPanel): accordion property should be nullable
- Lingua principale
- TypeScript
- Stelle
- 25k
- Fork
- 6.8k
- Merge medio
- 1g 8h
- PR unite (30g)
- 91
Descrizione
#### Reproduction
https://stackblitz.com/edit/angular-jxhwbd
Steps to reproduce:
1. Try to access an accordion property from an expansion panel without accordion parent.
#### Expected Behavior
`accordion` should be `MatAccordionBase | null` to reflect its definition.
#### Actual Behavior
`accordion` is defined as:
https://github.com/angular/components/blob/3a6c16f0c04ce8784b0e015a71a889864f51a5f4/src/material/expansion/expansion-panel.ts#L134
... while it's optional in fact, as the `expansion-panel` can be used without `accordion` (btw the constructor parameter should also be marked with "?"):
https://github.com/angular/components/blob/3a6c16f0c04ce8784b0e015a71a889864f51a5f4/src/material/expansion/expansion-panel.ts#L151
--
##### PS: Note that there are other places where the constructor parameter is decorated with `@Optional`, but the property itself isn't. Maybe a good candidate for a rule to prevent this mistake.
#### Environment
Angular CLI: 10.0.3
Node: 13.7.0
OS: darwin x64
Angular: 10.0.4
... animations, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router
Ivy Workspace: Yes
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.1000.3
@angular-devkit/build-angular 0.1000.3
@angular-devkit/build-optimizer 0.1000.3
@angular-devkit/build-webpack 0.1000.3
@angular-devkit/core 10.0.3
@angular-devkit/schematics 10.0.3
@angular/cdk 10.1.0
@angular/cli 10.0.3
@angular/flex-layout 10.0.0-beta.32
@angular/material 10.1.0
@ngtools/webpack 10.0.3
@schematics/angular 10.0.3
@schematics/update 0.1000.3
rxjs 6.6.0
typescript 3.9.7
webpack 4.43.0
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia in src/material/expansion/expansion-panel.ts, in corrispondenza della proprietà accordion e delle righe del costruttore indicate, quindi esamina la riproduzione StackBlitz per confermare il comportamento senza un elemento padre MatAccordion. Il lavoro è completato quando la tipizzazione pubblica rappresenta correttamente l'assenza di accordion, incluso il parametro del costruttore, e i test pertinenti di Angular Material passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- angular, typescript
- Ambito
- frontend
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100