如何使用从组件到服务的注入令牌

问题描述 投票:0回答:1

我在组件中有一个布尔值,我想将其注入到服务中(这是必需的)。我有点困惑如何实现这一目标。任何想法将不胜感激。

这里获取值作为路由中的参数。 (是侦察)

path: ':system/cases/:dataSource',
        component: ScopedInjectorComponent,
        resolve: {
          dataSource: CaseDataSourceResolver,
        },
        data: {
          component: CaseTileComponent,
          parameters:{isRecon: true},
          providers: [caseSearchProviderFactory],
        } as ScopedInjectorData<CaseTileComponent>,
      },

这里在组件 CaseTile 中阅读它

@Input()
  set isRecon(isRecon: boolean) {
    this._isRecon = isRecon;
  }

在 CaseTileConfigurationService 中,我需要使用令牌注入此值 isRecon 并从中读取。

constructor(
    @Inject(forwardRef(() => CASE_SEARCH_SERVICE_CONFIGURATION_SERVICE)) private readonly configurationService: BaseCaseDataSourceConfigurationService,
    @Inject(forwardRef(() => ACCESS_AREA_SERVICE)) private readonly accessAreaService: BaseAccessAreaService,
    private _iStaticService: InvestigationsStaticDataService,
  ) {
  }
angular angular-ui-router
1个回答
0
投票

在我看来,将组件注入到服务中并不是正确的方法。这类似于将 RestController 注入到 Spring Boot 应用程序中的服务中。 服务通常是一个独立的、可重用的类,可以在各种 Angular 组件中使用。 作为解决方案,您应该从组件中设置服务方法的布尔值。但服务应该注入到组件中。

@Component {
 .....
}
export class YourComponent {
 _isRecon: boolean
 @Input() set isRecon(isRecon: boolean) {
    this._isRecon = isRecon;
 }
 
 constructor(private service: YourService) AfterViewInit{
 }

 ngAfterViewInit() {
    this.service.setSomeBoolean(isRecon)
 }

}
© www.soinside.com 2019 - 2024. All rights reserved.