angular / angular/components

bug(MatExpansionPanel): accordion property should be nullable

Abierto
#20,152 2 comentarios 0 reacciones 0 asignados Ver en GitHub
area: material/expansion P4
Lenguaje dominante
TypeScript
Estrellas
25k
Forks
6.8k
Merge medio
1 d 8 h
PR fusionados (30 d)
91

Descripción

#### 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

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza en src/material/expansion/expansion-panel.ts, en la propiedad accordion y las líneas del constructor referenciadas; después, revisa la reproducción de StackBlitz para confirmar el comportamiento sin un elemento padre MatAccordion. Se considera terminado cuando el tipado público representa correctamente la ausencia de accordion, incluido el parámetro del constructor, y pasan las pruebas relevantes de Angular Material.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, typescript
Área
frontend
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.