Я создаю простую службу диалога подтверждения (Angular 2) с помощью этого метода:
confirm(body?: string, title?: string): Subject<void> {
this.confirmation = new Subject<void>();
// ... show dialog here... "are you sure?"
return this.confirmation;
}
_onYesClicked() {
// ... closing the dialog
this.confirmation.next();
this.confirmation.complete();
}
_onNoClicked() {
// ... closing the dialog
this.confirmation.complete();
}
Использование:
confirmationService.confirm().subscribe(() => alert("CONFIRMED"));
Если кто-то использует эту услугу, он возвращает объект (который является наблюдаемым) и может "подписаться" () на него. Подписка вызывается при нажатии "да", и поэтому подтверждение было дано...
Это правильный способ сделать это? И что более важно... будет вызов
this.confirmation.complete();
отказаться от подписки подписчиков и, следовательно, предотвратить любые затяжные ссылки (утечка памяти)?