我在不同模块的不同组件中使用的功能很少。我已经找到了使用服务的解决方案,可以在其中定义它们并将其注入组件中。但是,这是Angular 2+的最佳实践吗? 如果需要,该服务必须在哪里? 否则,在一个中心位置定义相同功能的最佳实践是什么。
谢谢
答案 0 :(得分:1)
根据https://angular.io/guide/architecture-services,组件必须向用户提供功能,并且必须将逻辑委托给服务。 Angular区分服务组件以提高系统的可重用性和模块化,但是它不执行这些原则。
答案 1 :(得分:1)
最佳做法是不要在多个位置复制相同的代码。 在名为 services 的子文件夹中定义与组件相关的所有服务,并声明它们为 injectable
some.service.ts:
@Injectable()
export class SomeService {
// ... Some code
}
然后您可以通过注入在需要它们的组件中使用它们
some.component.ts:
import { SomeService } from '../services/some.service';
@Component({
selector: 'app-some',
templateUrl: './some.component.html',
styleUrls: ['./some.component.css'],
})
export class SomeComponent {
// Inject service in controller
constructor(
private service: SomeService,
) { }
}
如果您具有通用服务(与多个组件相关),请在名为 core 的常规文件夹的名为“ services”的子文件夹中声明它们。同样,此核心文件夹包含用于通用组件的子文件夹名称 components 。