Ich benutze Pipes in Angular 2+, um Arrays von Objekten zu filtern. Im Folgenden werden mehrere Filterargumente verwendet, Sie können jedoch nur einen senden, wenn dies Ihren Anforderungen entspricht. Hier ist ein Plunker Example. Es wird nach den Schlüsseln suchen, nach denen Sie filtern möchten, und dann nach dem von Ihnen angegebenen Wert filtern. Es ist eigentlich ziemlich einfach, wenn es kompliziert klingt, ist es nicht, schau dir die Plunker Example an.
* Bitte beachten Sie, die über Gunter in einer Antwort heißt es, dass Arrays mehr als Filter Schnittstellen werden nicht verwendet, aber ich suchte den Link er sieht und findet diese Behauptung nichts sprechen. Auch das von mir bereitgestellte Plunker-Beispiel zeigt, dass dieser Code in Angular 5.2 wie vorgesehen funktioniert. Es wird in Angular 2+ funktionieren.
Hier ist das Rohr in einer * ngFor Richtlinie ist das Rohr, Und hier
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filtermulti'
})
export class FiltermultiPipe implements PipeTransform {
transform(myobjects: Array<object>, args?: Array<object>): any {
if (args && Array.isArray(myobjects)) {
// copy all objects of original array into new array of objects
var returnobjects = myobjects;
// args are the compare oprators provided in the *ngFor directive
args.forEach(function (filterobj) {
let filterkey = Object.keys(filterobj)[0];
let filtervalue = filterobj[filterkey];
myobjects.forEach(function (objectToFilter) {
if (objectToFilter[filterkey] != filtervalue && filtervalue != "") {
// object didn't match a filter value so remove it from array via filter
returnobjects = returnobjects.filter(obj => obj !== objectToFilter);
}
})
});
// return new array of objects to *ngFor directive
return returnobjects;
}
}
}
<div *ngFor='let item of items | filtermulti: [{title:"mr"},{last:"jacobs"}]' >
Hello {{item.first}} !
</div>
hier genannt wird, ist die Komponente, das Objekt zu Filter enthält ,
import { Component } from '@angular/core';
import { FiltermultiPipe } from './pipes/filtermulti.pipe';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
items = [{ title: "mr", first: "john", last: "jones" }
,{ title: "mr", first: "adrian", last: "jacobs" }
,{ title: "mr", first: "lou", last: "jones" }
,{ title: "ms", first: "linda", last: "hamilton" }
];
}
Plunker Example
GitHub Example: Fork a working copy of this example here
Hoffentlich hilft dies jemand. Happy Coding :-)
Dieser Entwurf ist albern. Ich muss das Dokument jedes Mal überprüfen, wenn ich auf dieses Problem stoße – tom10271