我在组件中有一个布尔值,我想将其注入到服务中(这是必需的)。我有点困惑如何实现这一目标。任何想法将不胜感激。
这里获取值作为路由中的参数。 (是侦察)
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,
) {
}
在我看来,将组件注入到服务中并不是正确的方法。这类似于将 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)
}
}