2016-12-19 4 views
0

gruppiert ich mehrere Eingänge und ihre Ereignisse in der Komponentenvorlage wie folgt aus:Angular 2: beobachtbare von mehreren Events oder Eventhandler

<tr (input)="onSearchObjectChange($event)"> 
    <th><input [(ngModel)]="searchObject.prop1"></th> 
    <th><input [(ngModel)]="searchObject.prop2"></th> 
    ... 
</tr> 

Jetzt möchte ich einen beobachtbaren aus dem onSearchObjectChange(), zu schaffen, sollte Holen Sie sich das Ergebnis eines Versprechens. Wie würde ich dies tun, oder gibt es einen besseren Weg, ein Observable zu verwenden? Kann ich die Funktion distinctUntilChanged() auch für Objekte verwenden?

Ich versuchte es mit einem Template-Variable zu lösen:

<tr #search > 
<th><input [(ngModel)]="searchObject.prop1"></th> 
<th><input [(ngModel)]="searchObject.prop2"></th> 
... 
</tr> 

Und mit Hilfe von ViewChild:

@ViewChild('search') search; 

ngAfterViewInit() { 
    Observable.fromEvent(this.search, 'input') 
     .subscribe(() => console.log("help")); 
} 

Aber es funktioniert nicht ...

Antwort

0
import {Component, AfterViewInit, ViewChild, ElementRef} from '@angular/core'; 
import {Observable} from "rxjs"; 

@Component({ 
    selector: 'search', 
    templateUrl: './search.html', 
    styleUrls: ['./search.css'], 
    providers: [] 
}) 
export class SearchComponent implements AfterViewInit { 
@ViewChild('search') search: ElementRef; 

constructor() { 
} 

ngAfterViewInit() { 
    Observable.fromEvent(this.search.nativeElement, 'input') 
     .subscribe(() => alert("It works!")) 
} 
} 
Verwandte Themen