Kiểm tra angle2: Không thể liên kết với 'ngModel' vì nó không phải là thuộc tính đã biết của 'input'


101

Tôi đang cố gắng kiểm tra ràng buộc hai chiều angle2 để kiểm soát input. Đây là lỗi:

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>

Ứng dụng.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');
  }));  
});

Câu trả lời:


213

Bạn cần nhập dữ liệu FormsModulevào TestBedcấu hình.

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

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

Những gì bạn đang làm với TestBedlà cấu hình một NgModule từ đầu cho môi trường thử nghiệm. Điều này cho phép bạn chỉ thêm những gì cần thiết cho bài kiểm tra mà không có các biến bên ngoài không cần thiết có thể ảnh hưởng đến bài kiểm tra.


42
Công cụ góc cạnh này dường như rất ngẫu nhiên. Cảm ơn sự giúp đỡ của bạn.
Pete B.

11
Đồng ý, @PeteB. Dependency injection là tuyệt vời như vậy .... nó làm mọi thứ cho bạn automagically ... JUST Đừng quên NHẬP KHẨU TẠI ĐÂY VÀ NO_ERROR_SCHEMA và yada YDA ...
Adam Hughes

Điều này đã loại bỏ lỗi của tôi, nhưng nó bị treo trong Karma và không tiếp tục tạo các thành phần khác sau đó. Nó bị kẹt bây giờ mà không có lỗi.
BlockchainDeveloper

1

Tôi đã gặp vấn đề tương tự, ngay cả sau khi nhập mô-đun biểu mẫu, điều này vẫn chưa được giải quyết. Vì vậy, tôi đã phải sử dụng thay thế cho ngModel cho trường văn bản. Vui lòng kiểm tra liên kết này :

Tóm lại, tôi đã sử dụng [value] để ràng buộc mô hình cho trường văn bản như thế này.

([value])="searchTextValue"

Ngoài ra, nếu bạn đang sử dụng trường ngày, bạn cần liên kết mô hình trong ts. trong html, hãy gọi phương thức

 (dateSelect)="onDateSelect($event)"

Trong tập lệnh loại, hãy sử dụng mã sau, mã này chỉ áp dụng được nếu bạn đang sử dụng bộ chọn 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;
 }

Điều này đã tiết kiệm cho tôi rất nhiều thời gian. Tất cả những điều kỳ quặc này trong giường thử nghiệm Angular. Làm tôi phát điên.
kiss-o-matic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.