Я обновляю старое приложение 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 в директиву?