У меня есть @Output
типа EventEmitter<any>
в компоненте. Выход работает, если я вызываю .emit()
на нем в функции после нажатия кнопки. Я могу поймать событие в родительском компоненте в этом случае без проблем. Однако это действительно так же, как тестовая мера. Когда я пытаюсь сделать то, что я действительно хочу сделать, что делает вызов базы данных, а затем испускает событие с успехом, событие никогда не испускается из дочернего компонента или не попадает в родительский компонент. Вот немного кода, чтобы показать, что я имею в виду:Угловой 2 EventEmitter Issue
testOutput() {
this.outputEvent.emit({event: 'buttonClick', message: 'Here is some output'});
}
makeAnUpdate(form) {
this._service.makeDbCall(data).subscribe(result => {
this.variable = result;
this.outputEvent.emit({ message: 'Here is a message to pass', success: true });
});
}
Я также пытался вызвать функцию, которая просто излучает событие внутри подписываться части ниже функции, и она по-прежнему не работает:
makeAnUpdate(form) {
this._service.makeDbCall(data).subscribe(result => {
this.variable = result;
this.testOutput();
});
}
У кого-нибудь еще была эта проблема? Опять же, функция testOutput
выше работает, если вы ее вызываете и только она, но не внутри функции makeAnUpdate
.
Трудно узнать, не видя, что это такое. This._service.makeDbCall (data) 'делает. Я предполагаю, что обратный вызов, переданный 'subscribe (...)', не вызван. –
Это вызов. Вызов выполняется в базу данных и возвращается к этой функции. Я точно знаю, потому что, если я делаю 'console.log' прямо перед эмитентом события внутри,' console.log' работает и появляется. – pjlamb12
Я предполагаю, что исполнение каким-то образом уходит из зоны углов. Я добавлю ответ. –