Angular의 forRoot() 메소드를 사용하는 경우

문제 : 지연 로드된 모든 모듈에서 싱글톤 언어 서비스를 공유해야 했습니다. 1년 동안 나는 forRoot() 메소드를 보고 그 강력함을 무시했습니다.

설명 : 메소드가 및 해당 제공자 종속성을 forRoot()반환합니다 .NgModule

이 예에서는 카운터 값을 따라가기 위해 서비스를 공유하고 있습니다. 모든 구성 요소가 카운터 서비스에 저장된 값을 증가시킬 때마다 이를 모든 구성 요소와 공유하고 싶습니다.

문제는 지연 로드 모듈을 도입하려고 할 때입니다. 지연 로드된 구성 요소가 어떻게 동일한 카운터 값을 공유하지 않는지 확인하세요. 즉시 로드된 구성 요소만 사용하는 경우 공유 서비스를 사용하면 아래 예제가 작동하지만 지연 로드 구성 요소가 어떻게 작동하는지 확인하세요. 게으른 구성 요소는 자체 서비스 인스턴스를 가져옵니다.

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

해결 방법 : AppModule에서 forRoot()를 호출하고 sharedModule에서 ModuleWithProviders를 반환합니다.

shared.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/

  • 참고: 공유 서비스와 공유 지시문을 동일한 모듈에 넣는 것은 권장하지 않습니다. 나는 미래에 나 자신을 참고하기 위해 이 글을 썼다.

각도 AsyncValidator

Suggested posts

Jest — 강력한 JavaScript 테스트 프레임워크

Jest — 강력한 JavaScript 테스트 프레임워크

테스트는 소프트웨어 개발의 필수적인 부분입니다. 코드가 신뢰할 수 있고 예상대로 작동하며 오류 가능성이 줄어듭니다.

엔터프라이즈 앱을 Angular 16으로 업그레이드

이제 고통이 온다

엔터프라이즈 앱을 Angular 16으로 업그레이드

신호부터 시작하여 모든 새로운 Angular v16 기능에 완전히 매료되었습니다. 그리고 얼마나 어려운지 알아보기 위해 회사의 앱 중 하나를 업그레이드하고 싶은 충동을 참을 수 없었습니다.

Related posts

전화번호만 있으면 누구나 추적 | OSINT 조사

전화번호만 있으면 누구나 추적 | OSINT 조사

OSINT 수사관, CTF 플레이어 또는 단순히 스팸 전화를 받는 사람일 수 있습니다. 광고에서 본 번호를 확인하려는 사람.

빨간 머리 소녀의 솔로 퍼포먼스

Hayden의 임무를 맡은 Katie는 자위하는 자신을 촬영합니다.

빨간 머리 소녀의 솔로 퍼포먼스

Hayden이 함께 저녁을 보낸 후 Katie를 대학 기숙사로 데려다 준 것은 자정 이후였습니다. 그녀는 아침에 일찍 수업이 있었고 전날 밤 그와 함께 지낸 후 다시 옷을 갈아입지 않았습니다.

더 이상 암호가 없습니다. 암호가 암호를 대체하는 방법

더 이상 암호가 없습니다. 암호가 암호를 대체하는 방법

모호함을 피하기 위해 다음 용어가 사용됩니다. 인증자; 로그인 웹사이트를 만드는 데 사용되는 휴대폰 사용자가 로그인 요청 서비스를 만들기 위해 사용하는 웹사이트 또는 애플리케이션 주어진 서비스를 제공하는 벤더 예.

대명사는 정말 무섭다

너무 자주 그렇듯 갑자기 와닿는다 다시 중간쯤이야 <아니, 태평양에 있는 사람 말고 마룬, 카니발에 있는 사람> 모든 헤드라인이 시끄러워…..