我不熟悉角度单元测试。。我正在尝试测试一个模态组件,但不断出现以下错误:“无法绑定到'formGroup',因为它不是'form'的已知属性。”
我尝试过将FormGroup、FormBuilder、Validator传递到测试提供程序中(因为它们是我正在测试的代码中使用的,所以我一次一个地将它们添加到一起),我还尝试将ReactiveFormsMoules添加到它中(与其他提供程序一起,而不与其他提供程序一起)他们)但继续得到错误。
就像我说的,我是新手,所以要温柔。
组成部分:
import { Component, OnInit, Input, OnChanges } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { Benefit } from '../../models/benefit';
import { PolicyBase } from '../../models/policy-base';
import { DatePipe } from '@angular/common';
import { DataService } from '../../services/data-service/data-service';
import { Strings } from '../../models/strings';
@Component({
selector: 'app-benefit-edit-modal',
templateUrl: './benefit-edit-modal.component.html',
styleUrls: ['./benefit-edit-modal.component.css']
})
export class BenefitEditModalComponent implements OnInit, OnChanges {
@Input() policy: PolicyBase;
@Input() mainForm: FormGroup;
@Input() selectedBenefitToChange: Benefit;
@Input() selectedBenefitToChangeIndex: number;
headerText: string;
private isAmountEditAvailable: boolean;
constructor(private fb: FormBuilder,
private dataService: DataService) { }
ngOnInit() {
this.mainForm.addControl('changeBenefitModalForm', this.fb.group({
benefitType: [''],
amount: [''],
issueDate: [''],
ceaseAge: ['']
})) ;
}
组成部分规格ts
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HttpClientModule } from '@angular/common/http';
import { FormGroup, FormBuilder, Validators, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
import { RouterTestingModule } from '@angular/router/testing';
import { Ng4LoadingSpinnerModule } from 'ng4-loading-spinner';
import { AppRoutingModule } from 'src/app/app-routing.module';
import { BenefitMock } from '../../mock-components/mock-models.ts/benefit-mock';
import { Benefit } from '../../models/benefit';
import { PolicyBase } from '../../models/policy-base';
import { DataService } from '../../services/data-service/data-service';
import { Strings } from '../../models/strings';
import { BenefitEditModalComponent } from './benefit-edit-modal.component';
import { DataServiceHelper } from '../../services/data-service/data-service-helper';
import { AlertService } from '../../services/alert-service.service';
import {WindowRef} from '../../services/window-ref-service';
import { APP_BASE_HREF } from '@angular/common';
describe('BenefitEditModalComponent', () => {
let component: BenefitEditModalComponent;
let fixture: ComponentFixture<BenefitEditModalComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
BenefitEditModalComponent
],
imports: [
HttpClientModule,
RouterTestingModule,
Ng4LoadingSpinnerModule,
],
providers: [
DataService,
DataServiceHelper,
AlertService,
FormGroup,
FormBuilder,
Validators,
{provide: APP_BASE_HREF, useValue: '/inforceillustrations/'}, WindowRef
],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BenefitEditModalComponent);
component = fixture.componentInstance;
fixture.detectChanges();
})
it('should create', () => {
expect(component).toBeDefined();
});
});
应用程序内。单元我们导入FormsModule和ReactiveFormsModule并导出ReactiveFormsModule。。。如果这有区别的话。
应用程序工作正常,这与单元测试无关。
你必须在导入数组中导入ReactiveFormsMoules
:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
BenefitEditModalComponent
],
imports: [
HttpClientModule,
RouterTestingModule,
Ng4LoadingSpinnerModule,
ReactiveFormsModule // <---- this line
],
providers: [
DataService,
DataServiceHelper,
AlertService,
FormGroup,
FormBuilder,
Validators,
{provide: APP_BASE_HREF, useValue: '/inforceillustrations/'}, WindowRef
],
})
.compileComponents();
}));
我的代码环境是Angular 9,当我设置反应式表单时,我遇到了这个错误: 我在Google和StackOverflow中做了一些研究,但在使用Angular 9时没有发现同样的问题,然而,根据其他帖子的建议,我确实将ReactiveFormsModule导入到app.module.ts、routing.module.ts以及recipe-edit.component.spec.ts文件中。然而,
我尝试使用Ionic(angular framework)进行简单登录,但我遇到了这个错误,我不知道如何解决它 我搜索了所有人,当他们添加< code >反应式模块时,错误消失了,但当我添加时,错误仍然存在 the app.module.ts 控制器1.ts 我错过了什么吗?请帮助我,我正在处理这个错误
我是Angular 6的新手,正在研究ReactiveForms。获取此错误并无法编译。我已经看到了不同的解决方案,并在导入中添加了ReactiveFormsModule指令,就像解决方案中建议的那样,但它仍然显示了相同的错误。请帮忙。
------[解决了]----- 将更改为:(
我试图在Angular中创建一个非常基本的表单(目前是一个标签和一个输入字段)。我知道这个问题在这里被问了很多次,但是尽管导入了FormsModule和ReactiveFormsModule,我仍然会得到这个错误,正如在Stackoverflow上多次提到的。 我的模块: 我的组件: 这是Stackblitz错误的打印屏幕:https://i.stack.imgur.com/teoyi.png 解
并将它们添加到: 然后我创建了一个组件来导入: 它工作得很好,但是现在我添加了第二个组件,它从第一个组件中复制了import和form标记。为什么第二个组件会出现这个错误?app.module.ts文件确实导入了所需的模块,它们可以很好地处理第一个组件,但是第二个组件不行