2016-06-24 12 views
9

मैं "angular2 webpack" और "angular2/फार्म, प्रत्यक्ष" उपयोग करें, लेकिन एक त्रुटि से मुलाकात की, मदद की जरूरत है ..angular2 प्रत्यक्ष संपत्ति 'debouceTime' प्रकार पर मौजूद नहीं है 'प्रत्यक्ष <any>'

वहाँ एक कस्टम प्रपत्र सत्यापनकर्ता है -

import {Observable} from 'rxjs/Rx'; 
import {REACTIVE_FORM_DIRECTIVES,FormControl, FormGroup, Validators} from '@angular/forms'; 

emailShouldBeUnique(control:FormControl) { 
    return new Observable((obs:any)=> { 
     control.valueChanges 
     .debouceTime(400) 
     .distinctUntilChanged() 
     .flatMap(term=>return !this.userQuery.emailExist(term)) 
     .subscribe(res=> { 
      if (!res) {obs.next(null)} 
      else {obs.next({'emailExist': true}); }; } 
     )});} 

मैं फ़ाइल "/projection_direction/node_modules/rxjs/operator/debounceTime.js"

मिल सकता है

क्यों है इस तरह के error--

संपत्ति 'debouceTime' प्रकार 'प्रत्यक्ष' पर मौजूद नहीं है।

उत्तर

26

सुनिश्चित करें कि आप शुरुआत कर दी है कि main.ts (जहां एप्लिकेशन bootstraped है)

import "rxjs/add/operator/map"; 
import "rxjs/add/operator/debounceTime"; 
... 
एक ही बार में

या सभी में

import "rxjs/Rx"; 

विस्तार

वहाँ हो a working example

//our root app component 
import {Component, EventEmitter, ChangeDetectorRef} from '@angular/core' 
import {Observable} from "rxjs/Rx"; 
@Component({ 
    selector: 'my-app', 
    providers: [], 
    template: ` 
    <div> 
     <h2>Hello {{name}}</h2> 

     <div>debounced message: {{message}}</div> 
    </div> 
    `, 
    directives: [] 
}) 
export class App { 

    protected message: string; 
    protected emitter = new EventEmitter<string>(); 
    public obs: Observable<string>; 

    constructor() { 
    this.name = 'Angular2 (Release Candidate!)' 

    this.obs = this.emitter 
     .map(x => x) 
     .debounceTime(1200) 
     ; 

    this.obs.subscribe(msg => this.message = msg); 
    } 

    ngOnInit(){ 
    this.emitter.emit("hello after debounce"); 
    } 
} 

और उस main.ts में हमारे पास जब काम कर रहा है:

//main entry point 
import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {App} from './app'; 

import "rxjs/Rx"; 

bootstrap(App, []) 
    .catch(err => console.error(err)); 

यह here

+0

मैं 'आयात" rxjs/add/operator/map "जोड़ता हूं; आयात "rxjs/add/operator/debounceTime" अब आयात करें; 'main.ts में, लेकिन त्रुटि अभी भी है ... –

+0

मैंने आपके लिए एक प्लंकर बनाया, जवाब बढ़ाया .. उम्मीद है कि इसे –

+0

@ RadimKöhler में मदद करनी चाहिए, मुझे लगता है कि प्लंकर त्रुटि कर रहा है। व्यक्तिगत रूप से मैं टीएस त्रुटियों को देखता हूं 'प्रकार का तर्क' (शब्द: कोई भी) => शून्य 'प्रकार के पैरामीटर के लिए असाइन करने योग्य नहीं है' (मान: कोई, अनुक्रमणिका: संख्या) => पर्यवेक्षण इनपुट <{}> '। 'void' टाइप करें 'ObservableInput <{}>' टाइप करने के लिए असाइन करने योग्य नहीं है। – BenRacicot

3

चेक आपसे कोई टाइपिंग त्रुटि यहाँ है। यह debounceTime है, debouceTime नहीं :)

संबंधित मुद्दे