我需要嵌套的模板驱动表单,并且我使用了本指南来做到这一点: Angular: Nested template driven form
不幸的是,正如本文中的第一条评论所述,当我尝试测试组件时,我无法克服此错误:
Error: StaticInjectorError(DynamicTestModule)[ControlContainer -> NgForm]:
StaticInjectorError(Platform: core)[ControlContainer -> NgForm]:
NullInjectorError: No provider for NgForm!
似乎,由于子组件需要使用来自父组件的现有ngForm,因此无法单独进行测试。
此stackblitz显示了我要说的话。 AddressComponent是子级,AppComponent是父级。
任何帮助将不胜感激。
答案 0 :(得分:1)
由于您的AddressComponent
需要一个现有的NgForm,因此您需要在测试设置中提供它:
TestBed.configureTestingModule({
imports: [FormsModule],
declarations: [AppComponent, AddressComponent, HelloComponent],
providers: [
{ provide: NgForm, useValue: new NgForm([], []) }
]
});
这可以解决错误,但是我以前从未这样做过。我不能对此发表评论。从长远来看,您可能想要实现自己的MockNgForm
类,然后使用该类的实例。