126

control の angular2 双方向バインディングをテストしようとしていinputます。エラーは次のとおりです。

Can't bind to 'ngModel' since it isn't a known property of 'input'.

app.component.html

<input id="name" type="text" [(ngModel)]="name" />
<div id="divName">{{name}}</div>

app.component.ts

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'  
})
export class AppComponent implements OnInit {
  name: string;    
}

app.component.spec.ts

import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
import { AppService } from './app.service';
describe('App: Cli', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent
      ],
      providers:[AppService]
    });
  });

  it('divName', async(() => {
    let fixture = TestBed.createComponent(AppComponent);
    let comp = fixture.componentInstance;
    comp.name = 'test';
    fixture.detectChanges();

    let compiled = fixture.debugElement.nativeElement;    
    expect(compiled.querySelector('divName').textContent).toContain('test');
  }));  
});
4

2 に答える 2

259

を構成にインポートする必要がありFormsModuleますTestBed

import { FormsModule } from '@angular/forms';

TestBed.configureTestingModule({
  imports: [ FormsModule ],
  declarations: [
    AppComponent
  ],
  providers:[AppService]
});

で行っていることはTestBed、テスト環境用に NgModule を最初から構成することです。これにより、テストに影響を与える可能性のある不要な外部変数を使用せずに、テストに必要なものだけを追加できます。

于 2016-09-20T01:51:53.647 に答える
1

フォームモジュールをインポートした後でも、これは解決されませんでした。そのため、テキスト フィールドには ngModel の代替を使用する必要がありました。このリンクを確認してください:

要約すると、[value] を使用して、このようなテキスト フィールドのモデルをバインドしました。

([value])="searchTextValue"

また、日付フィールドを使用している場合は、モデルを ts にバインドする必要があります。htmlで、メソッドを呼び出します

(dateSelect)="onDateSelect($event)"

タイプ スクリプトでは、次のコードを使用します。これは、Ngbdate ピッカーを使用している場合にのみ適用されます。

onDateSelect(event) {
  let year = event.year;
  let month = event.month <= 9 ? '0' + event.month : event.month;;
  let day = event.day <= 9 ? '0' + event.day : event.day;;
  let finalDate = year + "-" + month + "-" + day;
  this.finalDateVlaue = finalDate;
}
于 2020-04-24T13:51:39.453 に答える