Quando utilizzare il metodo forRoot() di Angular

Problema : avevamo bisogno di condividere un servizio linguistico singleton su tutti i moduli caricati lentamente. Per un anno ho visto il metodo forRoot() e ho semplicemente ignorato il suo potere.

Spiegazione : il forRoot()metodo restituisce un NgModulee le relative dipendenze del provider.

In questo esempio, stiamo condividendo un servizio per tenere il passo con un controvalore. Ogni volta che un componente incrementa il valore memorizzato nel servizio contatore, desidero condividerlo con tutti i componenti.

Il problema è quando si tenta di introdurre moduli caricati pigramente. Si noti come il componente caricato lazy non condivide lo stesso valore del contatore. Quando si utilizzano solo componenti caricati con entusiasmo, l'esempio seguente funzionerà se si utilizza un servizio condiviso, ma si noti come si comporta il componente caricato con entusiasmo. Il componente pigro ottiene la propria istanza del servizio.

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

Soluzione : chiamare forRoot() in AppModule e restituire un ModuleWithProviders in sharedModule.

modulo.condiviso.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 {}

Ora il servizio contatore è condiviso tra moduli caricati con entusiasmo e moduli caricati pigramente.

Altre letture consigliate:http://angularfirst.com/the-ngmodule-forroot-convention/

  • Nota: non consiglierei di inserire servizi condivisi e direttive condivise nello stesso modulo. Ho scritto questo articolo come riferimento per me stesso in futuro.

Validatori asincroni angolari

Suggested posts

Jest: un potente framework di test JavaScript

Jest: un potente framework di test JavaScript

Il test è una parte essenziale dello sviluppo del software. Assicura che il codice sia affidabile, funzioni come previsto e riduce la probabilità di errori.

Aggiornamento di un'app aziendale ad Angular 16

Ecco il dolore

Aggiornamento di un'app aziendale ad Angular 16

Sono assolutamente convinto di tutte le nuove funzionalità di Angular v16, a partire dai segnali e, beh, da tutto il resto. E non ho resistito all'impulso di aggiornare una delle app dell'azienda solo per vedere quanto potrebbe essere difficile.

Related posts

Cosa rende influente un podcast?

Cosa rende influente un podcast?

La scorsa settimana ho notato un comunicato stampa, inviato tramite PressGazette (un sito Web di notizie sui media britannici). L'articolo annunciava che Acast, la società di hosting e pubblicità di podcast di Scandi, avrebbe guidato un consorzio di editori "probabilmente i più influenti" nel podcasting.

La bugia del cowboy

Come le megacorporazioni hanno venduto agli americani una grossa falsità

La bugia del cowboy

È una brillante mattina d'oro sulle dolci colline dell'ovest, mentre i primi raggi di sole illuminano l'erba ghiacciata sulle pianure. Una mandria di placidi bovini Angus, nerissimi e massicci, si staglia contro l'alba mentre percorrono un sentiero battuto verso un luogo che tutti conoscono bene; il bancone della colazione.

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

Gli Stati Uniti possono fare il passo essenziale per non equiparare il comportamento razzista all'essere un buon americano?

L'assassinio di Jordan Neely e il problema del razzismo "patriottico".

[Avviso di attivazione: questo saggio include schermate di persone che elogiano l'assassino di Jordan Neely.] I funzionari delle forze dell'ordine hanno finalmente - e forse con riluttanza - accusato Daniel Penny, l'uomo che ha soffocato Jordan Neely fino alla sua morte, per quell'omicidio.

La persecuzione dei cristiani: il crimine d'odio di cui non parliamo

Dimentica l'islamofobia: i cristiani (e gli ebrei) sono le principali vittime dei crimini di odio religioso.

La persecuzione dei cristiani: il crimine d'odio di cui non parliamo

Qualsiasi mente razionale sa che i circoli politici e mediatici sono dominati dalla sinistra, anche dall'estrema sinistra, uno stato di cose che crea uno squilibrio nel discorso politico. Nel campo della religione, questo squilibrio è chiaramente visibile: giornali e reti di sinistra non si affrettano a difendere la fede cristiana.