Передать «сохраненное» событие в угловую директиву: Subject или EventEmitter или ...? - PullRequest
0 голосов
/ 30 октября 2019

Я обновляю старое приложение angular 2, которое имеет директиву для стилизации панели (путем установки ее класса css) в зависимости от состояния FormGroup. Существует три состояния: а) нетронутый или сохраненный б) затронутый и действительный в) затронутый и недействительный.

Поскольку AbstractControl не предлагает никаких событий для грязных / нетронутых изменений (https://github.com/angular/angular/issues/17736), в настоящее времяДиректива получает два входных параметра: FormGroup и EventEmitter, однако EventEmitter является частью службы персистентности и отправляется после успешного http-вызова oldHttp.post('/...', data, options).do( () => this.savedEvent.emit() ), который в антивирусах https://stackoverflow.com/a/34402906/2131459.

называетсяЯ мог бы использовать Предмет для этой цели, но если я правильно понимаю https://stackoverflow.com/a/50195284/2131459, я не должен использовать Предметы для сигнализации о событиях.

Что такое «чистый» подход для этой цели?

Я мог бы переместить EventEmitter в компонент и выдать его из service.saveData.subscribe(...) (где я уже называю markAsPristine), но я не уверен, считается ли он «хорошим стилем» (или даже может вызвать некоторые проблемы), чтобыпередать EventEmitter дочернему компоненту / директиве через @Input. Или это вполне законно использовать Subject в этом случае и передать его Observable в директиву?

...