首页 文章

观察Angular 2中对象属性的变化

提问于
浏览
8

我最近从Angular 1转移到Angular 2并经常遇到试图检测对象属性变化的问题(以前通过$ watch完成的事情) .

典型的用例是我将有一个可注入服务来维护一段数据,例如包含设置的对象:

@Injectable()
export class SettingsService
{
    _settings = {
        'settingA' : true,
        'settingB' : false
    }

   ...

   get settings()
   {
       return this._settings;
   }
}

然后,我将在Ionic应用程序中有一个组件,例如设置页面,它将从设置服务获取设置:

constructor(private settingsService : SettingsService)
{
    this.settings = settingsService.settings;
}

并将对象属性直接耦合到UI组件,如toggle . 问题不仅仅是在每个切换更改事件上调用一个函数,服务或组件如何知道设置对象已更改以触发适当的操作,如将设置保存到数据存储?

1 回答

  • 8

    要构建可观察的数据服务,您可以使用 rxjs 来自 rxjs . 您在服务中创建主题,然后您必须在组件中订阅此主题 .

    看看这里有关使用它创建服务的一些教程:example 1example 2 .

    理论上你有机会在你的服务中使用 EventEmitter . 但你不应该使用它 . 有关详细信息,请查看此answer . 在这个答案中,您还可以找到一个示例,如何使用 Observable 而不是 BehaviorSubject 来解决它

相关问题