У меня есть EventEmitter
, которые информируют пользователя, который уведомляет компонент о том, что состояние приложения изменилось.Angular2 EventEmitter не завершается после вызова .error
Это событие сообщает, что пользователь, который пытается аутентифицироваться, прошел успешно.
private emitAuthStatus(success: boolean) {
if (success) {
this.locationWatcher.emit({
authenticated: this.authenticated,
token: this._authData.token,
expires: this.expires
});
} else {
this.locationWatcher.error();
}
this.locationWatcher.complete();
}
Теперь, когда я звоню .emit
с последующим .complete
все работает должным образом. Но если я позвоню .error
, то .complete
выбрасывает ObjectUnsubscribedError
.
Что такое .error
, для чего я делаю неправильно в этом коде?
Но почему вы называете ошибку() и завершаете() здесь? вам следует позвонить/использовать их там, где вы подписываетесь на «locationWatcher observer» в компоненте. – micronyks
Имеет ли ошибка, что что-то пошло не так с событием, или что событие вызывает особый тип события? Когда я смотрю на документацию, похоже, что возникает особый тип событий, но, конечно же, это не должно означать, что «EventEmitter» больше не подписывается? – Linvi
Я не думаю, что 'error()' и 'complete()' предполагается использовать вообще. 'EventEmitter' в настоящее время расширяет' Observable', но это деталь реализации и, как ожидается, изменится в любой момент без какой-либо фазы устаревания. Используйте 'EventEmitter' только для' @Output() 'только в компонентах и используйте только метод' emit() '. –