Jasmine 带有父窗体的物料表-页脚中的输入字段结果为;没有NgForm的提供商“;运行单元测试时出错

Jasmine 带有父窗体的物料表-页脚中的输入字段结果为;没有NgForm的提供商“;运行单元测试时出错,jasmine,angular-material,karma-jasmine,angular-forms,angular-material-table,Jasmine,Angular Material,Karma Jasmine,Angular Forms,Angular Material Table,我有许多子组件,其中包含一个材质表,其父窗体(模板化)在父组件中定义。它们都工作正常,并且都通过了单元测试,但表尾有输入字段的除外。在这个平台上运行单元测试时,我得到了NullInjectorError:没有NgForm的提供程序!错误 这是包含Jasmine遇到问题的控件的标记部分: <ng-container matColumnDef="saturday"> <mat-header-cell *matHeaderCellDef

我有许多子组件,其中包含一个材质表,其父窗体(模板化)在父组件中定义。它们都工作正常,并且都通过了单元测试,但表尾有输入字段的除外。在这个平台上运行单元测试时,我得到了NullInjectorError:没有NgForm的提供程序!错误

这是包含Jasmine遇到问题的控件的标记部分:

            <ng-container matColumnDef="saturday">
            <mat-header-cell *matHeaderCellDef>Saturday</mat-header-cell>
            <mat-cell *matCellDef="let exception;let i = index;" class="hours">
                    <mat-form-field>
                        <input min=0  max=23.75 pattern="^(?!0\d)\d+(?:[.](?:25|5|75|0)0*)?$" required #today="ngModel" matInput [(ngModel)]="exception.hours['saturday']" (ngModelChange)="updateTimesheetEntry($event,today,'saturday')" (focus)="focused['saturday'][i]=true" (focusout)="focused['saturday'][i]=false" name="exception-saturday{{i}}">
                        <mat-error #total *ngIf="focused['saturday'][i]">{{getErrorText(today)}}</mat-error>
                    </mat-form-field>
            </mat-cell>
        <mat-footer-cell *matFooterCellDef class="hours">
                <input type="hidden" max=23.75 name="saturdayTotal" #saturdaytotal="ngModel" [ngModel]="getTotals('saturday')"> 
                <div *ngIf="saturdaytotal.invalid" class="error">
                        {{totalError}}
                </div> 
        </mat-footer-cell>  
        </ng-container>
let组件:AttendanceExceptionsComponent; let夹具:组件夹具

beforeach(异步(()=>{

}))

我已尝试将NgForm添加到提供者

        {provide : NgForm, useValue: <NgForm>{}},
{provide:NgForm,useValue:{},
但随后我遇到另一个错误:ngModel不能用于向父formGroup指令注册表单控件。请尝试使用 改为formGroup的合作伙伴指令“formControlName”


正如我所说,当我运行ng serve时,这一切都很好,只是测试抛出了这些错误&我无法绕过测试,因为它内置在我们的CI构建中,所以我完全被卡住了!

通过在规范文件中向提供程序添加以下内容使其正常工作:

describe('AttendanceExceptionsComponent', () => {
    {provide : NgForm, useValue: new NgForm([], [])},

我不知道为什么mat footer单元格中使用ngModel的控件的行为与mat单元格中的控件的行为不同,但它们与表单的连接方式显然不同。

De nada,朋友!
    {provide : NgForm, useValue: new NgForm([], [])},