angular – 直接绑定到服务属性的任何伤害?

创建服务的方法是否有任何损害,该服务包含我的角度应用程序的某些状态,将该服务注入到状态调节的组件中,然后在其模板中直接绑定到该服务的相应属性

我经常看到主题用于触发组件之间的状态更新,并且想知道是否存在上述方法不起作用且必须使用主题的情况.

我经常发现开发人员没有利用Angular中可用的绑定和更改检测,并且在他们不需要时使用Subjects基本上绕过它.

例如,我在这里有一个完整的主题/行为主题示例:MH-Take3文件夹中的https://github.com/DeborahK/MovieHunter-communication.

然后,我使用MH-Take4文件夹中的简单属性完全相同的功能,没有Subject / BehaviorSubject和相当少的代码.

但是,我建议的一件事是将您的服务属性包装到组件属性中,以便您的模板不需要知道您的服务.这不是必需的,但提供了良好的封装.

例如:

get showImage(): boolean {
    return this.movieParameterService.displayPosters;
}
set showImage(value: boolean) {
    this.movieParameterService.displayPosters = value;
}

我有一个“参数”服务,保留我的一个视图的参数.在这种情况下,它保留用户是否打开或关闭图像的显示.我使用组件中的getter和setter公开service参数.这样,模板绑定到组件,不需要知道服务.

除了封装的基本优点之外,这还使得更容易使用编辑器功能,例如“查找所有引用”,因为它将找到使用该服务的组件.如果唯一的引用是在模板中的字符串中,它将找不到任何引用.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...