Ich benutze eine Funktion, die einen booleschen Wert zurückgibt, um die Sichtbarkeit der Elemente mit dem versteckten Attribut innerhalb einer ngFor-Schleife festzulegen.Angular 2 verstecktes Attribut in ngFor mehrere Male auslösen
const countries = [
{country: 'USA', hide: 'false'},
{country: 'UK', hide: 'false'},
{country: 'Germany', hide: 'true'},
{country: 'France', hide: 'true'},
{country: 'Japan', hide: 'false'},
{country: 'Russia', hide: 'false'}
]
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
<my-list></my-list>
`,
})
export class App {
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
}
}
@Component({
selector: 'my-list',
template: `
<ul>
<li *ngFor="let l of list" [hidden]="setVisibility(l)">{{l.country}}</li>
</ul>
`,
})
export class List implements OnInit {
list;
ngOnInit(){
this.list = countries
}
setVisibility(country){
console.log('setting');
let hide = false;
if(country.hide === 'true'){
hide = true;
}
return hide;
}
}
habe ich ein console.log innerhalb der setVisibility Methode, wie oft diese Methode aufgerufen, um zu überprüfen. Ich habe erwartet, dass es 6 Mal aufgerufen wird (1 Mal pro Stück), aber es wird tatsächlich 24 Mal aufgerufen (4 Mal pro Stück). Warum wird diese Methode so oft aufgerufen? plunker
Es kann noch mehr sein, es geht darum, wie Winkel liest Ihre Funktion zum Binden, es ist besser, keine Funktionen in Bindings zu verwenden, stattdessen würde ich sagen, es ist besser, es so zu machen wie '[hidden] =" l.hide === 'true' "' – RezaRahmati
Ich habe die Funktion vereinfacht ein bisschen, um es zu zeigen, aber eigentlich sollte die Funktion lo Op durch Objekteigenschaften, um Sichtbarkeit einzustellen und passt nicht auf die Vorlage –
Ich beweise den Plünderer und es nur 4 mal – alehn96