In meiner Angular 2-Anwendung frage ich mich, ob es eine Möglichkeit gibt, über ein Array zu iterieren und gleichzeitig eine bestimmte Eigenschaft im Block *ngFor
zu filtern. So würde die Syntax wie folgt aussehen:Verwenden von * ngFor, um über ein Array zu iterieren und gleichzeitig nach einer bestimmten Eigenschaft zu filtern
<ng-template *ngFor="let flag['completed === false'] of service.flags">
<span class="standard-flag"
[class.hold-flag]="flag?.flagType === 'hold'">Flag
</span>
</ng-template>
Also im Grunde die Logik ist, für jedes Objekt („Flag“ ist ein Objekt) in dem Array, das vorhanden ist, wo die „abgeschlossen“ Eigenschaft auf „false ", gib diesen Wert zurück. Anstatt zuerst über das Array zu iterieren und dann mit * ngIf weiter zu filtern, wäre es nett (und sehr hilfreich in meiner speziellen Situation), wenn ich beides im Block * ngFor machen könnte. Möglich?
Der Grund, warum ich mich für diese Art der Konstruktion interessiert, ist, weil ich nur den ersten der Werte, wo "abgeschlossen" ist "falsch", und ich könnte damit umgehen mit "let i = index" im Block * ngFor in diesem Fall. Aber ich möchte nicht das erste aller Flag-Objekte zurückgeben, sondern nur die Flag-Objekte, bei denen die Eigenschaft "completed" auf "false" gesetzt ist.
Sie können PipeTransform implementieren und in der Verwendung ng-wenn als Filter https://angular.io/guide/pipes – Jocket
Verwendung von Pipes Machen Sie hier, wie durch @Jocket diesen Link überprüfen wies darauf hin, für eine ähnliche Implementierung ist hier die Eingabe vom Benutzer [link] (https://plnr.co/edit/Bxfw6a?p=info). für weitere Informationen über Rohre überprüfen Sie diese [link] (https://rahulrsingh09.github.io/AngularConcepts/pipes) –
Danke, das kann sehr gut den Trick tun. – Muirik