/ / Angular2 filtre rxjs double-clic La propriété 'longueur' n'existe pas sur le type 'MouseEvent' - angulaire, dactylographe, rxjs, rxjs5

Angular2 rxjs filter double click La propriété 'length' n'existe pas sur le type 'MouseEvent' - angular, typescript, rxjs, rxjs5

Je suis juste jouer avec Rxjs

quel est le problème avec ce code

J'ai une erreur

mon objectif est de définir le "Mon message"

seulement lorsque le bouton est cliqué deux fois.

La propriété "longueur" n'existe pas sur le type "MouseEvent".

// JS

import { Component, OnInit, ElementRef, ViewChild } from "@angular/core";
import {Observable} from "rxjs/Observable";
import "rxjs/add/observable/fromEvent";
import "rxjs/add/operator/filter";
import "rxjs/add/operator/map";

@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent  implements OnInit {
message = "Hello Rxjs";
@ViewChild("btn") btn: ElementRef;
ngOnInit(){
let clicks = Observable.fromEvent<MouseEvent>(this.getNativeElement(this.btn), "click")
.filter(ev => ev.length >= 2)
.map(e => "My Message")
.subscribe(msg => this.message = msg);
}
getNativeElement(element){
return element.nativeElement;
}
}

// html

<h1>
<button #btn>Click</button>
{{message}}
</h1>

UPDATE1

Je suis ce cours courses.ultimateangular.com et le problème se passe avec l'autre extrait :(

UPDATE2 suite au soupçon de @martin cela semble fonctionner

let clicks = Observable.fromEvent<MouseEvent>(this.getNativeElement(this.btn), "click")
.bufferCount(2, 1)
.map(e => "ah Pippo")
.subscribe(msg => this.message = msg);

Réponses:

2 pour la réponse № 1

Si vous voulez n'accepter que deux événements de souris et terminer l'utilisation, take() opérateur:

let clicks = Observable.fromEvent<MouseEvent>(this.getNativeElement(this.btn), "click")
.take(2)
.map(e => "My Message")
.subscribe(msg => this.message = msg);