我有配置有Angular CLI的Single Page Application(SPA)Angular7。 这是具有不同Angular Services的大型应用程序,包括全局级别和组件级别。
使用服务的应用程序组件,I / O事件,发射器,用于不同组件之间的通信。
因此,请提出建议并指导我删除组件内至少50%的服务变量使用量。 例如,请参见下面的使用内部组件的代码服务变量。
但是在这里我面临的问题是每个服务具有比公共变量更多的功能。而且这些Service公共级别的声明变量也用于不同的组件中,而且一个组件中带有值的变量以及其他组件中的变量也不确定。如果我要使用应用程序路由。
我可以使用任何其他更好的方法来代替声明服务变量和访问内部组件。
请帮忙。
AppService.ts
@Injectable({
providedIn: 'root'
})
export class AppService {
public isApplicationInitialized=false;
..
...
}
app.component.ts
import { Component } from '@angular/core';
import {AppService} from './AppService'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'App';
constructor(public appService:AppService){
this.appService.isApplicationInitialized=true;
...
..
}
}
答案 0 :(得分:1)
角度服务是非常强大的工具。它们使您可以将依赖项注入组件或其他服务(服务取决于另一服务)。
基本上,它们在这里使您能够以分离的方式管理数据:组件需要获取/保存一些数据?与其在组件内部获取数据,不如注入一些相关服务并通过该服务获取数据。您的组件应只专注于自己的业务,即负责与用户互动。
使用服务,组件可以共享数据而彼此之间实际上并不认识。
提供者设置(在AppModule或Components声明中)可以进一步配置服务的注入和使用方式。
说,您可能会滥用此选项并使应用程序的结构不良,从而导致繁琐的编码和大量不相关的服务。
我对您的建议是先查看项目的“全局”,然后根据数据域对它进行结构化,这样可以更清楚地了解每个数据的位置以及由哪个服务负责。 看到具有大量依赖关系的组件构造函数是很常见的,不要为此感到难过。