Есть три метода, которые я видел для управления обнаружением изменений в Angular2.
-
Наблюдаемые
@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
export interface Info { name:string; } @Injectable() class NameService { info: Info = { name : "Jack" }; change(){ this.info.name = "Jane"; } }
Мой вопрос: все три реализации могут работать при подписке на просмотр изменений в данных. Как вы решаете, когда использовать один вместо другого, и каковы недостатки каждого из них.