Angular public 服务

Angular public service

我想将来自服务的值用于我的 HTML。

import { Injectable } from '@angular/core';
@Injectable()
export class DataService {
  foo =  'Foo';
}

我发现的大多数示例都使用私人服务

import { Component } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'my-app',
  template: '{{foo}}',
})

export class AppComponent {
  get foo() { return this.dataService.foo; }
  constructor(private dataService: DataService) {}
}

我想知道为什么不将服务声明为 Public 以避免 getter

import { Component } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'my-app',
  template: '{{dataService.foo}}',
})

export class AppComponent {
  constructor(public dataService: DataService) {}
}

这是一个基本的封装问题https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)。最佳做法是将服务设置为私有,因为每个模块都有一个角色:

  • 服务提供实用程序功能
  • 组件使用服务来执行操作

您还可以查看此主题以获取更多信息: