angular2 परीक्षण: 'ngModel' को नहीं बांध सकता क्योंकि यह 'इनपुट' की ज्ञात संपत्ति नहीं है


103

मैं नियंत्रण के लिए कोणीय 2 टू-बाइंडिंग परीक्षण का प्रयास कर रहा हूं 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');
  }));  
});

जवाबों:


216

आपको कॉन्फ़िगरेशन FormsModuleमें आयात करने की आवश्यकता है TestBed

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

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

आप जो कर रहे हैं TestBedवह परीक्षण वातावरण के लिए खरोंच से एक NgModule कॉन्फ़िगर कर रहा है। इससे आप केवल वही जोड़ सकते हैं जो परीक्षण के लिए जरूरी है, बिना बाहरी चर के अनावश्यक है जो परीक्षण को प्रभावित कर सकता है।


42
यह कोणीय सामान बहुत यादृच्छिक लगता है। आपके सहयोग के लिए धन्यवाद।
पीट बी।

11
सहमत, @ पेबेट। निर्भरता इंजेक्शन बहुत बढ़िया है .... यह आपके लिए सब कुछ स्वचालित रूप से करता है ... बस यहाँ और NO_ERROR_SCHEMA और यदा योग करने के लिए मत भूलना ...
एडम ह्यूजेस

इससे मेरी त्रुटि दूर हो गई, लेकिन यह कर्म में लटका रहा और इसके बाद अन्य घटकों का निर्माण जारी नहीं रखा। यह अब बिना किसी त्रुटि के अटक गया है।
BlockchainDeveloper

1

मेरे पास एक ही मुद्दा था, फॉर्म मॉड्यूल आयात करने के बाद भी यह हल नहीं हुआ था। इसलिए मुझे टेक्स्ट फील्ड के लिए ngModel के विकल्प का उपयोग करना पड़ा। कृपया इस लिंक की जाँच करें :

सारांश में मैंने इस तरह पाठ क्षेत्र के लिए मॉडल को बांधने के लिए [मूल्य] का उपयोग किया था।

([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;
 }

इससे मेरा एक टन बच गया। ये सभी कोणीय परीक्षण बिस्तरों में होते हैं। मुझे उत्तेजित कर रहा है।
चुंबन-o-matic
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.