Bird
Raised Fist0
Angularframework~20 mins

Pre-rendering static pages in Angular - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Angular Pre-rendering Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What will be the rendered output of this Angular component when pre-rendered?

Consider this Angular standalone component that uses pre-rendering:

import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-greeting',
  standalone: true,
  template: `
    

{{ greeting() }}

` }) export class GreetingComponent { greeting = signal('Hello, Angular!'); }

What will the static HTML output be after pre-rendering?

Angular
import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-greeting',
  standalone: true,
  template: `
    <h1>{{ greeting() }}</h1>
  `
})
export class GreetingComponent {
  greeting = signal('Hello, Angular!');
}
A<h1></h1>
B<h1>Hello, Angular!</h1>
C<h1>{{ greeting() }}</h1>
D<h1>undefined</h1>
Attempts:
2 left
💡 Hint

Signals provide reactive values that Angular can evaluate during pre-rendering.

lifecycle
intermediate
1:30remaining
Which Angular lifecycle hook is NOT called during pre-rendering?

When Angular pre-renders a static page, it runs some lifecycle hooks of components. Which of the following lifecycle hooks is not executed during pre-rendering?

AngOnDestroy
BngOnInit
CngOnChanges
DngAfterViewInit
Attempts:
2 left
💡 Hint

Think about hooks that are called during component cleanup.

🔧 Debug
advanced
2:30remaining
Why does this Angular pre-rendered page show empty content?

Given this Angular component used in pre-rendering:

import { Component } from '@angular/core';

@Component({
  selector: 'app-time',
  standalone: true,
  template: `

The time is: {{ currentTime }}

` }) export class TimeComponent { currentTime = new Date().toLocaleTimeString(); }

After pre-rendering, the page shows <p>The time is: </p> with no time displayed. Why?

Angular
import { Component } from '@angular/core';

@Component({
  selector: 'app-time',
  standalone: true,
  template: `<p>The time is: {{ currentTime }}</p>`
})
export class TimeComponent {
  currentTime = new Date().toLocaleTimeString();
}
AThe template syntax is incorrect and does not bind currentTime properly.
BThe component property currentTime is initialized too late, after pre-rendering.
CThe Date object is not serializable during pre-rendering, so the value is lost.
DAngular pre-rendering runs in a Node environment without locale support, so toLocaleTimeString returns an empty string.
Attempts:
2 left
💡 Hint

Consider the environment where pre-rendering runs and how JavaScript date formatting behaves there.

📝 Syntax
advanced
2:00remaining
Which option correctly configures Angular for pre-rendering static pages?

To pre-render Angular pages using Angular Universal, which configuration snippet is correct in angular.json?

A"prerender": { "builder": "@angular-devkit/build-angular:prerender", "options": { "browserTarget": "app:build", "serverTarget": "app:server" } }
B"prerender": { "builder": "@angular-devkit/build-angular:server", "options": { "browserTarget": "app:build" } }
C"prerender": { "builder": "@angular-devkit/build-angular:prerender", "options": { "browserTarget": "app:server", "serverTarget": "app:build" } }
D"prerender": { "builder": "@angular-devkit/build-angular:build", "options": { "browserTarget": "app:build", "serverTarget": "app:server" } }
Attempts:
2 left
💡 Hint

Check the builder name and targets for pre-rendering.

🧠 Conceptual
expert
3:00remaining
What is the main benefit of pre-rendering Angular pages compared to client-side rendering?

Choose the most accurate benefit of pre-rendering Angular pages as static HTML before serving to users.

APre-rendering eliminates the need for Angular's router to work on the client side.
BPre-rendering allows Angular components to run faster in the browser by skipping change detection.
CPre-rendering improves SEO and initial load speed by serving fully rendered HTML from the server.
DPre-rendering automatically updates the page content in real-time without user interaction.
Attempts:
2 left
💡 Hint

Think about what users and search engines see first when loading a pre-rendered page.

Practice

(1/5)
1. What is the main benefit of pre-rendering static pages in an Angular application?
easy
A. Improves page load speed and SEO by generating static HTML before user visits
B. Allows dynamic data fetching on every user request
C. Enables client-side routing without server involvement
D. Automatically updates content in real-time without reload

Solution

  1. Step 1: Understand what pre-rendering does

    Pre-rendering generates static HTML pages ahead of time, before users visit the site.
  2. Step 2: Identify benefits of static HTML

    Static pages load faster and improve SEO because search engines can easily read content.
  3. Final Answer:

    Improves page load speed and SEO by generating static HTML before user visits -> Option A
  4. Quick Check:

    Pre-rendering = faster load + better SEO [OK]
Hint: Pre-rendering means static pages ready before visit [OK]
Common Mistakes:
  • Confusing pre-rendering with client-side dynamic rendering
  • Thinking pre-rendering updates content in real-time
  • Assuming pre-rendering fetches data on every request
2. Which command is used to generate static pages with Angular Universal for pre-rendering?
easy
A. ng serve --static
B. ng build --prod
C. npm run prerender
D. npm start prerender

Solution

  1. Step 1: Recall Angular Universal pre-render command

    The standard command to generate static pages is npm run prerender.
  2. Step 2: Eliminate incorrect commands

    ng build --prod builds the app but does not pre-render; ng serve --static and npm start prerender are invalid commands.
  3. Final Answer:

    npm run prerender -> Option C
  4. Quick Check:

    Pre-render command = npm run prerender [OK]
Hint: Use npm run prerender to generate static pages [OK]
Common Mistakes:
  • Using ng build instead of prerender
  • Confusing serve commands with prerender
  • Typing npm start prerender which is invalid
3. Given this Angular pre-render setup snippet, what will be the output folder after running npm run prerender?
"prerender": "ng run my-app:prerender"
medium
A. dist/my-app/browser
B. dist/my-app/server
C. dist/my-app/static
D. dist/my-app/prerendered

Solution

  1. Step 1: Understand Angular Universal output folder

    By default, Angular Universal outputs pre-rendered static pages into dist/my-app/prerendered.
  2. Step 2: Differentiate output folders

    dist/my-app/browser is for client build, dist/my-app/server is for server bundle, and dist/my-app/static is not standard.
  3. Final Answer:

    dist/my-app/prerendered -> Option D
  4. Quick Check:

    Pre-render output folder = dist/my-app/prerendered [OK]
Hint: Pre-render output is in dist/my-app/prerendered folder [OK]
Common Mistakes:
  • Confusing browser build folder with prerender output
  • Assuming server folder contains static pages
  • Guessing non-standard folder names
4. You run npm run prerender but get an error: "Cannot find module '@angular/platform-server'". What is the likely fix?
medium
A. Remove Angular Universal from the project
B. Install @angular/platform-server package using npm
C. Change the prerender script to use ng serve
D. Run npm install without any package name

Solution

  1. Step 1: Identify missing module error cause

    The error means the Angular Universal server package is missing from node_modules.
  2. Step 2: Fix by installing missing package

    Run npm install @angular/platform-server to add the required package.
  3. Final Answer:

    Install @angular/platform-server package using npm -> Option B
  4. Quick Check:

    Missing module error = install package [OK]
Hint: Missing module? Install it with npm install [OK]
Common Mistakes:
  • Changing prerender script instead of fixing dependencies
  • Removing Angular Universal unnecessarily
  • Running npm install without specifying package
5. You want to pre-render multiple routes in your Angular app. Which configuration in angular.json helps specify routes for pre-rendering?
hard
A. "routes": ["/home", "/about", "/contact"] inside the prerender options
B. "lazyModules": ["home", "about", "contact"] inside build options
C. "serverTarget": "my-app:server" inside serve options
D. "outputPath": "dist/my-app/static" inside build options

Solution

  1. Step 1: Identify prerender routes configuration

    Angular Universal uses a routes array inside prerender options to list paths to pre-render.
  2. Step 2: Differentiate other options

    lazyModules is unrelated to prerender routes, serverTarget defines server build, and outputPath sets build output folder.
  3. Final Answer:

    "routes": ["/home", "/about", "/contact"] inside the prerender options -> Option A
  4. Quick Check:

    Pre-render routes = routes array in prerender options [OK]
Hint: List routes in prerender options to pre-render multiple pages [OK]
Common Mistakes:
  • Using lazyModules instead of routes for prerender
  • Confusing serverTarget with prerender routes
  • Changing outputPath instead of routes