2017-09-21 2 views
0

Momentan habe ich mehrere Filter. Ich möchte den Filter jedoch zurücksetzen, es funktioniert nicht.Zurücksetzen des Filters in Angular 4

showOnlyMyRequest(){ 
    this.requests = this.requests.filter(request => request.requestedBy === 'John Doe'); 
    } 

showAllRequest(){ 
    this.requests = this.requests.filter(request => request.requestedBy === '*'); 
    } 

In dem obigen Beispiel wird die showAllRequest() nicht die vorherigen Filter zurückgesetzt.

+0

'.filter()' gibt eine neue Sammlung mit den nur gefilterte Elemente. Wenn Sie zurücksetzen möchten, behalten Sie die ungefilterte Sammlung an einem anderen Ort. –

+0

Eigentlich möchte ich auf den Standardzustand zurücksetzen. Entfernen Sie alle zuvor angewendeten Filter. –

Antwort

0

Von MDN web doc:

The filter() method creates a new array with all elements that pass the test implemented by the provided function.

So Ihre Anfragen Array wird zum einen .filter() zurückgegeben, sollten Sie Ihre gefilterten Werte woanders Lager wenn Sie entweder benötigen, um Ihre Anfragen gefiltert oder nicht zu zeigen.

0

Wenn Sie einen Parameter aus dem Feld für die Suche an Ihre Suchfunktion senden möchten, können Sie dies versuchen. lassen Sie mich wissen, ob es eine bessere Lösung gibt, damit ich mich auch verbessern kann. Danke im Voraus.

showAllRequest(parameter1){ 
    if (parameter1 === '') { 
    /* call getmethod or the whole array variable got during get mehtod 
    */ 
    } 
this.requests = this.requests.filter(request => request.requestedBy 
    === '*'); 
    } 

codierte Version unter:

filterform(search) { 
if (search === '') { 
     this.getFormSettings(); 
     } 
    this.requests = this.requests.filter(request => 
request.requestedBy.indexOf(search.toLowerCase()) >= 0 === '*'); 
}