2016-11-11 70 views
-1

我有一个角2组分,其做工精细,但是当我运行这段代码ng test通过我得到的followind错误信息所有测试:角2测试得到错误

Can't bind to 'ngModel' since it isn't a known property of 'mdl-textfield'.                   
    1. If 'mdl-textfield' is an Angular component and it has 'ngModel' input, then verify that it is part of this module.         
    2. If 'mdl-textfield' is a Web Component then add "CUSTOM_ELEMENTS_SCHEMA" to the '@NgModule.schema' of this component to suppress this message.  
    ("ditedIndex !== i">{{role.name}}</span>                            
         <mdl-textfield *ngIf="editedIndex === i" [ERROR ->][(ngModel)]="roles[i].name" class="full-width" value={{role.name}}></mdl-textfi 

场>

这里是我的HTML:

<tr *ngFor="let role of roles; let i = index;" (click)="doSelect(role, i)"> 
      <td class="table-id">{{ i + 1 }}</td> 
      <td> 
       <span *ngIf="editedIndex !== i">{{role.name}}</span> 
       <mdl-textfield *ngIf="editedIndex === i" [(ngModel)]="role.name" class="full-width" value={{role.name}}></mdl-textfield> 
      </td> 
      <td> 
       <span *ngIf="editedIndex !== i">{{role.description}}</span> 
       <mdl-textfield *ngIf="editedIndex === i" [(ngModel)]="role.description" class="full-width" value={{role.description}}></mdl-textfield> 
      </td> 
      <td> 
       <button *ngIf="editedIndex === i" mdl-button mdl-button-type="mini-fab" mdl-colored="primary" (click)="doSave($event)" 
        mdl-ripple><mdl-icon>edit</mdl-icon></button> 
       <button *ngIf="editedIndex === i" mdl-button mdl-button-type="mini-fab" mdl-colored="accent" (click)="doDelete($event, i)" 
        mdl-ripple><mdl-icon>remove</mdl-icon></button> 
      </td> 
     </tr> 

角色是一个有2个属性的模型。

为什么它运行正常,但它在测试中失败!

回答

0

因为我使用的自定义组件,我发现我不得不进口CUSTOM_ELEMENTS_SCHEMA到app.component.spec.ts

import { CUSTOM_ELEMENTS_SCHEMA} from '@angular/core'; 

,并用它在架构

TestBed.configureTestingModule({ 
    declarations: [ 
    AppComponent, 
    ], 
    imports: [ 
    MdlModule, 
    ], 
    schemas: [CUSTOM_ELEMENTS_SCHEMA] 
}); 
1

您需要配置任何所需的模块/组件/等测试床。你唯一免费获得的是CommonModule。其他的一切,你需要从头开始配置。这意味着增加了FormsModule,不管模块(组件/指令/等)用于MDL

TestBed.configureTestingModule({ 
    imports: [ 
    FormsModule, 
    AnyMDLModule 
    ], 
    declarations: [], 
    providers: [] 
})