2016-06-24 72 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/Rx"; 

EXTEND

有是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 /添加/运营商/地图”; 现在导入“rxjs/add/operator/debounceTime”; '在main.ts ,,但错误仍然... –

+0

我为你创建了一个plunker,扩展了答案..希望它应该有帮助 –

+0

@RadimKöhler我认为Plunker是错误的。我个人看到TS错误 '类型'(term:any)=> void'的参数不能分配给类型为'(value:any,index:number)'的参数=> ObservableInput <{}>'。 类型'void'不可分配给类型'ObservableInput <{}>'.' – BenRacicot

3

在这里你有一个错字。它的debounceTime,而不是debouceTime :)