feat(core): missing-injectable migration should migrate empty object literal providers (#33709)
In View Engine, providers which neither used `useValue`, `useClass`, `useFactory` or `useExisting`, were interpreted differently. e.g. ``` {provide: X} -> {provide: X, useValue: undefined}, // this is how it works in View Engine {provide: X} -> {provide: X, useClass: X}, // this is how it works in Ivy ``` The missing-injectable migration should migrate such providers to the explicit `useValue` provider. This ensures that there is no unexpected behavioral change when updating to v9. PR Close #33709
This commit is contained in:

committed by
Alex Rickabaugh

parent
71b8e271b3
commit
15fefdbb8d
@ -34,9 +34,9 @@ class BaseProviderCase {
|
||||
constructor(zone: NgZone) {}
|
||||
}
|
||||
|
||||
export class ProvideCase extends BaseProviderCase {}
|
||||
export class EmptyProviderLiteralCase {}
|
||||
|
||||
export class ProviderClass {}
|
||||
export class ProviderClass extends BaseProviderCase {}
|
||||
|
||||
export class DontNeedCase {}
|
||||
|
||||
@ -46,7 +46,7 @@ export class DirectiveCase {}
|
||||
@NgModule({
|
||||
providers: [
|
||||
TypeCase,
|
||||
{provide: ProvideCase},
|
||||
{provide: EmptyProviderLiteralCase},
|
||||
{provide: DontNeedCase, useValue: 0},
|
||||
{provide: DontNeedCase, useFactory: () => null},
|
||||
{provide: DontNeedCase, useExisting: TypeCase},
|
||||
@ -56,4 +56,3 @@ export class DirectiveCase {}
|
||||
declarations: [ProvidersTestDirective, ProvidersTestComponent],
|
||||
})
|
||||
export class ProvidersTestModule {}
|
||||
|
||||
|
@ -41,11 +41,10 @@ class BaseProviderCase {
|
||||
constructor(zone: NgZone) {}
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class ProvideCase extends BaseProviderCase {}
|
||||
export class EmptyProviderLiteralCase {}
|
||||
|
||||
@Injectable()
|
||||
export class ProviderClass {}
|
||||
export class ProviderClass extends BaseProviderCase {}
|
||||
|
||||
export class DontNeedCase {}
|
||||
|
||||
@ -55,7 +54,7 @@ export class DirectiveCase {}
|
||||
@NgModule({
|
||||
providers: [
|
||||
TypeCase,
|
||||
{provide: ProvideCase},
|
||||
{ provide: EmptyProviderLiteralCase, useValue: undefined },
|
||||
{provide: DontNeedCase, useValue: 0},
|
||||
{provide: DontNeedCase, useFactory: () => null},
|
||||
{provide: DontNeedCase, useExisting: TypeCase},
|
||||
@ -65,4 +64,3 @@ export class DirectiveCase {}
|
||||
declarations: [ProvidersTestDirective, ProvidersTestComponent],
|
||||
})
|
||||
export class ProvidersTestModule {}
|
||||
|
||||
|
Reference in New Issue
Block a user