Bird
0
0

You want to create a facade service that combines data from UserService and SettingsService and exposes a single observable userSettings$. Which approach correctly implements this?

hard📝 Application Q15 of 15
Angular - Advanced Patterns

You want to create a facade service that combines data from UserService and SettingsService and exposes a single observable userSettings$. Which approach correctly implements this?

class UserSettingsFacade {
  userSettings$: Observable<UserSettings>;

  constructor(private userService: UserService, private settingsService: SettingsService) {
    // Fill in here
  }
}
Athis.userSettings$ = combineLatest([this.userService.getUser(), this.settingsService.getSettings()]).pipe(map(([user, settings]) => ({ user, settings })));
Bthis.userSettings$ = this.userService.getUser().pipe(map(user => this.settingsService.getSettings()));
Cthis.userSettings$ = this.userService.getUser() + this.settingsService.getSettings();
Dthis.userSettings$ = forkJoin(this.userService.getUser(), this.settingsService.getSettings());
Step-by-Step Solution
Solution:
  1. Step 1: Combine multiple observables correctly

    Use combineLatest to emit latest values from both observables together.
  2. Step 2: Map combined values into single object

    Use map operator to create an object with user and settings properties.
  3. Final Answer:

    this.userSettings$ = combineLatest([this.userService.getUser(), this.settingsService.getSettings()]).pipe(map(([user, settings]) => ({ user, settings }))); -> Option A
  4. Quick Check:

    Use combineLatest + map to merge observables [OK]
Quick Trick: Use combineLatest and map to merge observables [OK]
Common Mistakes:
  • Using + operator to add observables
  • Mapping one observable to another observable instead of values
  • Using forkJoin which waits for all to complete once

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Angular Quizzes