Представьте себе какое-то тяжелое содержимое, которое может отображаться на веб-странице, например диаграмме. Angular предоставляет 2 варианта переключения видимости указанного содержимого.
ng-show отобразит содержимое независимо от выражения и просто "спрячет" его после факта. Это не идеально, так как пользователь никогда не может "открыть" контент во время сеанса, поэтому для его рендеринга было ненужным.
ng-if лучше в этом отношении. Использование его вместо ng-show будет препятствовать тому, чтобы тяжелое содержимое отображалось в первую очередь, если выражение ложно. Однако его сила также является ее слабостью, потому что, если пользователь скрывает диаграмму, а затем показывает ее снова, содержимое визуализируется с нуля каждый раз.
Как я могу сделать директиву, которая берет лучшее из обоих миров? Это означает, что он работает как ng-if, пока контент не будет отображаться в первый раз, а затем переключится на работу как ng-show, чтобы предотвратить повторный рендеринг его каждый раз.