Отключите обнаружение изменений в особых случаях, когда глубокая проверка объектов может значительно снизить производительность
идно из названия: я работаю над очень большим проектом и с несколькими компонентами, которые я использовалChangeDetectionStrategy.OnPush
чтобы избежать плохих выступлений. Мне было интересно, «хорошо» ли включать в каждый компонент эту стратегию и, в случае использованияChangeDetectionRef.detectChanges()
программно обновить компонент при необходимости?
-
Это небольшой компонент, который у меня есть в приложении:
<my-map
(updatedGeometry)="setUpdatedGeometry($event)"
[startGraphEdit]="elementToEdit" [startCut]="elementToCut"
[startCopy]="elementToCopy"
[updateGraph]="elementToUpdate"
[showElement]="elementToShow"
(selectedProfile)="setProfile($event)"
[reducedChange]="reducedChange"
(reduceComposer)="setReducedComposer($event)"
[labelsVisible]="labelsVisible"
(visibleComposer)="setVisibleComposer($event)"
[activateLayers]="activeLayers"
(curLayers)="setCurrentLayers($event)"
[loadExtent]="extentToLoad"
(extent)="setExtent($event)"
[updateZoom]="newZoom"
(curZoom)="setCurrentZoom($event)"
(curLon)="setCurrentLon($event)"
(curLat)="setCurrentLat($event)"
(poiNotesOffset)="setPoiNotesOffset($event)"
[cancelPoiNoteCreation]="visibleDetailPanel"
(poiNoteUpdatedPosition)="setPoiNoteUpdatedPosition($event)"
[updatePoiNotePosition]="poiNotesElementForUpdate"
[removePoiNoteElement]="poiNotesElementForDeletion"
[updatePoiNotes]="updatePoiNotes"
[projectCode]="prjCode"
(poiNote)="poiNote($event)"
[setPrecisionPointerValues]="precisionPointerValues"
(precisionPointerValues)="updatePrecisionPointer($event)"
(exploreToolArea)="setExploreToolArea($event)"
(extentArea)="setExtentArea($event)"
[exploreToolRadius]="exploreToolRadius"
(newExploreToolRadius)="setExploreToolRadius($event)"
[currEnvironment]="currEnvironment"
(elementSelected)="onElementClick($event)"
[setaClasses]="classes"
[height]="mapHeight"
[width]="mapWidth"
[offsetX]="mapOffsetX"
[offsetY]="mapOffsetY"
[geometriesToHighlight]="geometriesToHighlight"
[highlightLineElements]="lineElements"
(poiList)="setPoiList($event)">
</my-map>
компонент имеет много входов и выходов, а также взаимодействует с другими компонентами, используяSubjects
а такжеBehaviorSubjects
.