angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.38k stars 6.75k forks source link

[MatStepper] FormControlLike is not compatible with FormGroup #15859

Open rileyG opened 5 years ago

rileyG commented 5 years ago

What is the expected behavior?

The stepControl attribute of the CdkStep/MatStep classes should be castable to/assignable from a FormGroup or FormArray.

What is the current behavior?

Conversion of type 'FormControlLike' to type 'FormGroup' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. Property 'controls' is missing in type 'FormControlLike'. Happens during compilation when trying to cast FormControlLike to a FormGroup.

Type FormGroup is not assignable to type FormControlLike Is the warning shown in HTML files when trying to assign a FormGroup to the stepControl input of a MatStep.

What are the steps to reproduce?

Create a MatStepper with a FormGroup assigned to a stepControl of one of the MatSteps. To reproduce the compilation issue, try to cast the stepControl of one step into a FormGroup within a TypeScript function.

Which versions of Angular, Material, OS, TypeScript, browsers are affected?

Material Version 7.3.7

sumpton commented 5 years ago

I have this error as well. It is possibly my editor, the latest WebStorm?

grubeninspekteur commented 5 years ago

See also https://github.com/angular/components/pull/15464#issuecomment-482629144

Londovir commented 5 years ago

This also causes massive problems under Ivy rendering. I have an Angular 8 project, and recently opted into Ivy rendering. Automatically every instance of [stepControl] that I was using in stepper threw errors because of me assigning a FormGroup instance to the [stepControl]. Ivy apparently is quite a bit more strict on validation - even more than traditional AOT has been. Since FormGroup doesn't have registerOnChange or registerOnDisabledChange, I'm basically stuck and cannot use both Ivy rendering and [stepControl], since there's no way I can see to treat my FormGroup as a FormControlLike, since FormControlLike is not exported.

shlomoa commented 5 years ago

Appeared only after enabling ivy latest material