Kiedy używać metody forRoot() Angulara

Problem : musieliśmy udostępnić usługę języka singleton we wszystkich leniwie ładowanych modułach. Przez rok widziałem metodę forRoot() i po prostu ignorowałem jej moc.

Objaśnienie : forRoot()Metoda zwraca NgModulezależności typu i dostawcy.

W tym przykładzie udostępniamy usługę, która pozwala na śledzenie wartości licznika. Za każdym razem, gdy jakikolwiek komponent zwiększa wartość przechowywaną w usłudze licznika, chcę udostępnić to wszystkim komponentom.

Problem pojawia się, gdy próbujesz wprowadzić leniwie ładowane moduły. Zwróć uwagę, że komponent ładowany z opóźnieniem nie ma tej samej wartości licznika. W przypadku korzystania wyłącznie z komponentów ładowanych z chciwością poniższy przykład zadziała, jeśli korzystasz z usługi współdzielonej, ale zwróć uwagę, jak zachowuje się komponent ładowany z opóźnieniem. Leniwy komponent pobiera własną instancję usługi.

import { NgModule } from '@angular/core';
import { CounterService } from './counter.service';
@NgModule({
  providers: [CounterService],
})
export class SharedModule {}

Rozwiązanie : wywołaj forRoot() w AppModule i zwróć ModuleWithProviders we współdzielonym module.

udostępniony.moduł.ts

import { NgModule,ModuleWithProviders  } from '@angular/core';
import { CounterService } from './counter.service';
@NgModule({
})
export class SharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: SharedModule,
      providers: [ CounterService ]
    }
  }
}

import { NgModule } from '@angular/core';
import { BrowserModule  } from '@angular/platform-browser';
import { SharedModule } from './shared/shared.module';
import { AppComponent } from './app.component';
import { EagerComponent } from './eager.component';
import { routing } from './app.routing';
@NgModule({
  imports: [
    BrowserModule,
    SharedModule.forRoot(),
    routing
  ],
  declarations: [
    AppComponent,
    EagerComponent
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Teraz usługa licznika jest współdzielona pomiędzy chętnie ładowanymi i leniwie ładowanymi modułami.

Inne polecane lektury:http://angularfirst.com/the-ngmodule-forroot-convention/

  • Uwaga: nie zalecałbym umieszczania usług współdzielonych i dyrektyw współdzielonych w tym samym module. Napisałem ten artykuł jako odniesienie dla siebie w przyszłości.

Angularowe walidatory asynchroniczne

Suggested posts

Jest — potężny framework do testowania JavaScript

Jest — potężny framework do testowania JavaScript

Testowanie jest istotną częścią tworzenia oprogramowania. Zapewnia, że ​​kod jest niezawodny, działa zgodnie z oczekiwaniami i zmniejsza prawdopodobieństwo błędów.

Aktualizacja aplikacji korporacyjnej do Angular 16

Nadchodzi ból

Aktualizacja aplikacji korporacyjnej do Angular 16

Jestem absolutnie kupiony przez wszystkie nowe funkcje Angular v16, zaczynając od sygnałów i cóż, wszystko inne. I po prostu nie mogłem się oprzeć pokusie zaktualizowania jednej z aplikacji firmy, aby zobaczyć, jakie to może być trudne.

Related posts

Śledź każdego, kto ma tylko numer telefonu | Śledztwo OSINT

Śledź każdego, kto ma tylko numer telefonu | Śledztwo OSINT

Możesz być śledczym OSINT, graczem CTF lub po prostu kimś, kto odbiera połączenia spamowe. Ktoś, kto próbuje zweryfikować numer, który widziałeś w reklamie.

Dziennik Ouvert

Dziennik Ouvert

Otwórz pamiętnik: zdjęcie dziennie . Zawsze fascynowały mnie opowieści.

Archiwum tego zagrożenia: tom 7 Black Basta

Archiwum tego zagrożenia: tom 7 Black Basta

W dzisiejszym połączonym świecie zagrożenie cyberatakami jest bardziej powszechne niż kiedykolwiek. Cyberprzestępcy i podmioty państwowe nieustannie starają się wykorzystywać luki w zabezpieczeniach i kraść cenne dane, stanowiąc poważne zagrożenie dla organizacji każdej wielkości.

NIEOGRANICZONE ŻYCIE

Kiedy dorastasz, zwykle słyszysz, że świat jest taki, jaki jest, a twoje życie polega na tym, by żyć swoim życiem w świecie, nigdy nie ryzykując życia, po prostu podążaj wyznaczoną ścieżką i umrzyj w końcu i staraj się nie za bardzo walnij w ściany. Ale to bardzo ograniczone życie.