typescript - Jak poskytnu ControlContainer uvnitř jednotkového testu komponenty Angular?
Jak je uvedeno v názvu, jak mohu poskytnout ControlContainer v jednotkovém testu Angular?
Následuje vzniklá chyba:
NullInjectorError: StaticInjectorError(DynamicTestModule)[ChildFormComponent -> ControlContainer]:
StaticInjectorError(Platform: core)[ChildFormComponent -> ControlContainer]:
NullInjectorError: No provider for ControlContainer!
Můj pokus poskytnout ControlContainer:
beforeEach(() => {
const parentFixture = TestBed.createComponent(ParentFormComponent);
const parentComponent = parentFixture.componentInstance;
parentComponent.initForm();
fixture = TestBed.createComponent(ChildFormComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
Viděl jsem i jiná řešení, která používají:
declarations: [
...MY_DECLARATIONS
],
imports: [
...MY_IMPORTS
],
providers: [
{
provide: ControlContainer,
useValue: MyFormGroupDirective
}
]
Neměl jsem žádné štěstí, ale pokud je zde někdo, kdo by mohl osvětlit situaci; byl bych velmi vděčný.
Odpověď č. 1
Dokázal jsem odvodit řešení z tohoto příspěvku:
Jak simulovat ControlContainer v jednotkovém testu Angular?
Nakonec jsem udělal toto:
let component: MyChildComponent;
let fixture: ComponentFixture<MyChildComponent>
let fg: FormGroup;
let fgd: FormGroupDirective;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ...MY_DECLARATIONS ],
imports: [ ...MY_IMPORTS ],
providers: [
{ provide: ControlContainer, useValue: fgd }
]
});
});
beforeEach(() => {
const parentFixture = TestBed.createComponent(MyParentComponent);
const parentComponent = parentFixture.componentInstance;
fg = parentComponent.form;
fgd = new FormGroupDirective([], []);
fgd.form = fg;
const childFixture = TestBed.createComponent(MyChildComponent);
const childComponent = childFixture.componentInstance;
childFixture.detectChanges();
});
Co jsem chtěl udělat, bylo připojit inicializovanou rodičovskou formulářovou skupinu k dítěti.
