Có ba phương pháp mà tôi đã thấy để quản lý phát hiện thay đổi trong Angular2.Khi nào sử dụng Observable vs EventEmitter vs Dot Rule để phát hiện thay đổi trong angular2
quan sát
@Injectable() export class TodosService { todos$: Observable<Array<Todo>>; private _todosObserver: any; private _dataStore: { todos: Array<Todo> }; constructor(private _http: Http) { // Create Observable Stream to output our data this.todos$ = new Observable(observer => this._todosObserver = observer).share(); this._dataStore = { todos: [] }; } }
EventEmitter.
@Injectable() class NameService { name: any; nameChange: EventEmitter = new EventEmitter(); constructor() { this.name = "Jack"; } change(){ this.name = "Jane"; this.nameChange.emit(this.name); } }
Dot Rule
export interface Info { name:string; } @Injectable() class NameService { info: Info = { name : "Jack" }; change(){ this.info.name = "Jane"; } }
Câu hỏi của tôi là, tất cả ba triển khai có thể làm việc khi đăng ký để xem những thay đổi trong dữ liệu. Làm thế nào để bạn quyết định khi nào nên sử dụng cái này thay vì cái kia, và những hạn chế của mỗi cái là gì.
Một bất lợi của quy tắc chấm: nó là ngầm định chứ không phải là rõ ràng. Cho đến nay, tôi thích EventEmitter. –
ý nghĩa của quy tắc chấm là gì? –