2016-05-08 4 views
1

Wenn ngIffalse ist, wird der gesamte HTML-Block nicht gerendert. Ist es das gleiche für die falschen Fälle eines ngSwitch?angular 2 ngIf und ngSwitch für einfache Anmeldung

möchte ich bestimmte Elemente einer Webseite nicht gemacht haben, es sei denn, der Benutzer angemeldet ist

Und ein Followup Frage auf die Leistung.

sagen wir, eine bestimmte HTML-Abschnitt ist eine Liste von über 1000 Rendering Forum-Threads mit ngFor. Wenn dieser Abschnitt eine ngIf == false hat, wird sich die Ladegeschwindigkeit verbessern? Bedeutet es, dass es die ngFor nur dann ausführt, wenn ngIftrue wird?

Antwort

3

Wenn Sie die *ngFor mit *ngIf dann die *ngFor nicht machen und nicht ausführen überhaupt wickeln, wenn der *ngIf Ausdruck false ist, und dies wird auf jeden Fall die Leistung zu verbessern. Das Ändern des DOM ist teuer und sollte nur bei Bedarf durchgeführt werden.

[hidden]="expression" im Gegensatz wird weiterhin das DOM aktualisieren und das Element rendern, nur die display -Eigenschaft wird festgelegt, das Element nicht anzuzeigen.

*ngSwitch funktioniert ähnlich wie *ngIf und wird *ngFor nicht rendern oder ausführen, wenn die Verzweigungsbedingung falsch ist.

+0

Danke Günter! Könnten Sie klären, was Sie mit "teuer" meinen? –

+0

Benötigt viel CPU-Ressourcen und verlangsamt das Rendern der Seite. –

0

In Angular-1.5 Das entsprechende DOM wird nicht gerendert, wenn die Bedingung nicht übereinstimmt. Siehe AngualrJS-Dokumentation. Ich denke nicht, dass sie dieses Verhalten in angular-2 geändert haben.