我经常发现开发人员没有利用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参数.这样,模板绑定到组件,不需要知道服务.
除了封装的基本优点之外,这还使得更容易使用编辑器功能,例如“查找所有引用”,因为它将找到使用该服务的组件.如果唯一的引用是在模板中的字符串中,它将找不到任何引用.