MCPcopy Create free account
hub / github.com/angular/angular / ɵɵdeferWhen

Function ɵɵdeferWhen

packages/core/src/defer/instructions.ts:231–262  ·  view source on GitHub ↗
(rawValue: unknown)

Source from the content-addressed store, hash-verified

229 * @codeGenApi
230 */
231export function ɵɵdeferWhen(rawValue: unknown) {
232 const lView = getLView();
233 const tNode = getSelectedTNode();
234
235 if (ngDevMode) {
236 trackTriggerForDebugging(lView[TVIEW], tNode, 'when <expression>');
237 }
238
239 if (!shouldAttachTrigger(TriggerType.Regular, lView, tNode)) return;
240
241 const bindingIndex = nextBindingIndex();
242 if (bindingUpdated(lView, bindingIndex, rawValue)) {
243 const prevConsumer = setActiveConsumer(null);
244 try {
245 const value = Boolean(rawValue); // handle truthy or falsy values
246 const lDetails = getLDeferBlockDetails(lView, tNode);
247 const renderedState = lDetails[DEFER_BLOCK_STATE];
248 if (value === false && renderedState === DeferBlockInternalState.Initial) {
249 // If nothing is rendered yet, render a placeholder (if defined).
250 renderPlaceholder(lView, tNode);
251 } else if (
252 value === true &&
253 (renderedState === DeferBlockInternalState.Initial ||
254 renderedState === DeferBlockState.Placeholder)
255 ) {
256 triggerDeferBlock(TriggerType.Regular, lView, tNode);
257 }
258 } finally {
259 setActiveConsumer(prevConsumer);
260 }
261 }
262}
263
264/**
265 * Prefetches the deferred content when a value becomes truthy.

Callers

nothing calls this directly

Calls 10

getLViewFunction · 0.90
getSelectedTNodeFunction · 0.90
trackTriggerForDebuggingFunction · 0.90
shouldAttachTriggerFunction · 0.90
nextBindingIndexFunction · 0.90
bindingUpdatedFunction · 0.90
setActiveConsumerFunction · 0.90
getLDeferBlockDetailsFunction · 0.90
renderPlaceholderFunction · 0.90
triggerDeferBlockFunction · 0.90

Tested by

no test coverage detected