Gần đây tôi đã chuyển sang Angular 2 từ Angular 1 và thường gặp các vấn đề cố gắng phát hiện các thay đổi trong thuộc tính của đối tượng (một cái gì đó được thực hiện trước đó thông qua $ watch).Quan sát sự thay đổi trong một thuộc tính đối tượng trong Angular 2
Các trường hợp sử dụng điển hình là tôi sẽ có một dịch vụ tiêm duy trì một phần dữ liệu, ví dụ một đối tượng chứa các thiết lập:
@Injectable()
export class SettingsService
{
_settings = {
'settingA' : true,
'settingB' : false
}
...
get settings()
{
return this._settings;
}
}
sau đó tôi sẽ có một phần như một trang cài đặt trong một ứng dụng Ionic rằng sẽ nhận được các thiết lập từ các dịch vụ cài đặt:
constructor(private settingsService : SettingsService)
{
this.settings = settingsService.settings;
}
Và trực tiếp vài các thuộc tính đối tượng để một thành phần giao diện người dùng giống như một toggle. Vấn đề khác với việc gọi một hàm trên mỗi sự kiện thay đổi chuyển đổi như thế nào hoặc dịch vụ hoặc thành phần biết rằng đối tượng cài đặt đã thay đổi để kích hoạt một hành động thích hợp như lưu cài đặt vào kho dữ liệu?
Dường như sử dụng một BehaviorSubject vẫn đòi hỏi một cuộc gọi chức năng khi chuyển đổi thay đổi trạng thái chứ không chỉ có khả năng đón sự thay đổi trong dịch vụ . Tốt ghi chú về việc sử dụng EventEmitter mặc dù, tôi đã sử dụng chúng ở nơi khác để thông báo cho các thành phần của dữ liệu cập nhật trong các dịch vụ. – cubiclewar