Challenge: Build a client that allows the user to search for cars in a city.
The user can select the maximum distance and they can change the sorting order.
The results should be refreshed automatically when a parameter is changed.
@Injectable({ | |
providedIn: 'root' | |
}) | |
export class CarsService { | |
const userLanguage: LanguageShortName; | |
constructor( | |
private languageService: LanguageService, | |
) { | |
this.userLanguage = this.languageService.getLanguage('en'); |
@NgModule({ | |
imports: [ | |
// The AppServerModule should import your AppModule followed | |
// by the ServerModule from @angular/platform-server. | |
AppModule, | |
ServerModule, | |
ServerTransferStateModule, | |
NoopAnimationsModule | |
], | |
providers: [ |
@NgModule({ | |
imports: [ | |
... | |
], | |
declarations: [ | |
... | |
], | |
// Providers that are different between the Server and the Browser | |
providers: [ | |
... |
import { Inject, Injectable } from '@angular/core'; | |
import { LanguageService, LanguageShortName } from 'somewhere'; | |
import { REQUEST } from '@nguniversal/express-engine/tokens'; | |
import { Request } from 'express'; | |
@Injectable() | |
export class ServerLanguageService extends LanguageService { | |
constructor(@Inject(REQUEST) private request: Request) { | |
super(); | |
} |
import { Injectable } from '@angular/core'; | |
import { LanguageService, LanguageShortName } from 'somewhere'; | |
@Injectable() | |
export class WebLanguageService extends LanguageService { | |
constructor() { | |
super(); | |
} | |
getLanguage(defaultLanguage: LanguageShortName): LanguageShortName { |
import { LanguageShortName } from '../models/language-short-name'; | |
export abstract class LanguageService { | |
readonly SUPPORTED_LANGUAGES: LanguageShortName[] = ['nl', 'en', 'sv', 'de']; | |
public abstract getLanguage(defaultLanguage: LanguageShortName): LanguageShortName; | |
} |
import { Inject, Injectable, Optional } from '@angular/core'; | |
import { RESPONSE } from '@nguniversal/express-engine/tokens'; | |
import { Response } from 'express'; | |
@Injectable() | |
export class StatusCodeResponseService { | |
private response: Response; | |
constructor( | |
@Optional() |
import { Injectable, Optional } from '@angular/core'; | |
import { Observable } from 'rxjs'; | |
import { StatusCodeResponseService } from './status-code-response.service'; | |
import { HttpClient, HttpErrorResponse } from '@angular/common/http'; | |
import { environment } from '@env/environment'; | |
import { Observable, throwError } from 'rxjs'; | |
import { catchError } from 'rxjs/operators'; | |
@Injectable({ | |
providedIn: 'root' |
import { NgModule } from '@angular/core'; | |
import { StatusCodeResponseService } from './status-code-response.service'; | |
@NgModule({ | |
providers: [StatusCodeResponseService], | |
}) | |
export class CoreModule {} |