Когда использовать метод Angular forRoot()

Проблема : нам нужно было использовать один языковой сервис для всех лениво загружаемых модулей. В течение года я видел метод forRoot() и просто игнорировал его мощь.

Объяснение : forRoot()Метод возвращает объект NgModuleи его зависимости от поставщика.

В этом примере мы делимся службой, чтобы не отставать от значения счетчика. Каждый раз, когда какой-либо компонент увеличивает значение, хранящееся в службе счетчиков, я хочу поделиться этим со всеми компонентами.

Проблема в том, что вы пытаетесь ввести лениво загружаемые модули. Обратите внимание, что загружаемый отложенно компонент не использует одно и то же значение счетчика. При использовании только нетерпеливых загружаемых компонентов приведенный ниже пример будет работать, если вы используете общую службу, но обратите внимание, как ведет себя лениво загружаемый компонент. Ленивый компонент получает собственный экземпляр службы.

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

Решение : вызовите forRoot() в AppModule и верните ModuleWithProviders в SharedModule.

общий.module.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 {}

Теперь служба счетчиков распределяется между активно загружаемыми и лениво загружаемыми модулями.

Другие рекомендуемые чтения:http://angularfirst.com/the-ngmodule-forroot-convention/

  • Примечание. Я бы не рекомендовал размещать общие службы и общие директивы в одном модуле. Я написал эту статью как справочник для себя в будущем.

Угловые асинхронные валидаторы

Suggested posts

Jest — мощный фреймворк для тестирования JavaScript

Jest — мощный фреймворк для тестирования JavaScript

Тестирование — неотъемлемая часть разработки программного обеспечения. Это гарантирует, что код надежен, функционирует должным образом и снижает вероятность ошибок.

Обновление корпоративного приложения до Angular 16

Вот и боль

Обновление корпоративного приложения до Angular 16

Меня полностью устраивают все новые функции Angular v16, начиная с сигналов и, ну, во всем остальном. И я просто не мог устоять перед желанием обновить одно из приложений компании, просто чтобы посмотреть, насколько это сложно.

Related posts

Обучение на рабочей неделе важнее, чем вы думаете

Обучение на рабочей неделе важнее, чем вы думаете

Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.

Как спасти планету и заработать деньги

Как спасти планету и заработать деньги

Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.

Сбор OSINT для поиска угроз

Сбор OSINT для поиска угроз

Привет, киберлюбители! Добро пожаловать обратно в серию OSINT по поиску угроз. В первой статье я рассказал вам об OSINT и его важности для поиска угроз.

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.