2016-10-01 6 views
7

Jak zwiększyć wydajność przy wielokrotnym renderowaniu szablonu przy użyciu ngFor? Mam sytuację, w której muszę wyświetlać ten sam szablon w oparciu o liczbę. Robię to za pomocą * ngFor. Szablon ładuje się poprawnie, ale martwię się o wydajność. Ponieważ muszę wielokrotnie wyświetlać tę samą zawartość przez kilka tysięcy razy, wydajność będzie powolna po wczytaniu szablonu. Zrobiłem demo plunarek tutaj http://plnkr.co/edit/qTj4SVRnFD6N15PZ1GWC?p=preview. proszę zwiększyć liczbę formgroups w formarray z różnicą 1000, a następnie system będzie powolny lub się zepsuje. ten sposób i stworzyć formarray,Powolne renderowanie szablonu za pomocą metody angleular2 * ngFor

 for(var i=0;i<100;i++){ 
    let dummyFormGroup=this.fb.group({ 
    'name':[''], 
    'place':[''] 
    }) 
    this.dummyFormArray.push(dummyFormGroup); 
} 

A ja uczynić kontrole formarray użyciu ngFor jak ten

<div *ngFor="let formgroup of dummyFormArray.controls" style="display:flex;flex-direction:row"> 
<p> 
    <label>Name:</label> 
    <input type="text" [formControl]="formgroup.controls['name']" /> 
</p> 
<p> 
<label>Place:</label> 
<input type="text" [formControl]="formgroup.controls['place']" /> 
</p> 

Czy ktoś mógłby mi zaproponować podejście, gdzie mogę zwiększyć wydajność po załadowaniu szablonu? Ponieważ jestem w porządku z czekaniem na wczytanie szablonu, jeśli potrzebuje on renderować tysiące rekordów. Ale gdy szablon jest gotowy, chcę, aby system był szybki w tym przypadku używając * ngFor. Niech ktoś mi pomoże w rozwiązaniu tego problemu. Dzięki!

+0

czy możesz wyjaśnić, co masz na myśli mówiąc slow? Czy to post czy pre render? – Ced

+0

Jego powolne renderowanie po poście –

+0

Gdy szablon jest gotowy, edycja w polach wprowadzania tekstu jest wyświetlana powoli. Problem z logiką kodu jest prawidłowy? mam na myśli, czy * ngAby uruchomić jakiekolwiek zdarzenia w tle po załadowaniu szablonu? –

Odpowiedz

4

Domyślnie kątowe sprawdzanie wykrywania zmian w każdym komponencie w drzewie.

Na przykład, jeśli powiążesz klucz, z komponentami wejściowymi, wszystko stanie się dość niechlujne.

Więcej na wykrywaniu zmian tutaj: https://stackoverflow.com/a/39802466/4299560

0

Można również poprawić występ tylko rendering widoczne szablonów. Załóżmy, że zaczynasz renderować 10 szablonów, a po rozpoczęciu przewijania (na dole strony) renderujesz więcej. Przeglądarka internetowa zajmuje trochę czasu, aby renderować wszystkie elementy DOM. Renderowanie "just-on-time" jest lepsze niż renderowanie "all-at-once". Wszystkie dane pozostaną w pamięci, dzięki czemu możliwe będzie sortowanie lub wyszukiwanie określonych szablonów.

Powiązane problemy