Angular Service最佳实践

时间:2018-12-14 12:59:03

标签: angular typescript service

我在不同模块的不同组件中使用的功能很少。我已经找到了使用服务的解决方案,可以在其中定义它们并将其注入组件中。但是,这是Angular 2+的最佳实践吗? 如果需要,该服务必须在哪里? 否则,在一个中心位置定义相同功能的最佳实践是什么。

谢谢

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