zbudować usługę dialogowe potwierdzenia prosty (kątowa 2) za pomocą tej metody:Czy Subject.complete() anuluje subskrypcję wszystkich odbiorców?
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();
}
Zastosowanie:
confirmationService.confirm().subscribe(() => alert("CONFIRMED"));
Jeśli ktoś korzysta z usługi, dostaje Subject (który jest zauważalny) powrócił i może "subskrybować()" do niego. Subskrypcja jest wywoływana po kliknięciu "Tak", a zatem potwierdzenie zostało udzielone ...
Czy to jest właściwy sposób? I ważniejsze ... będzie wywołanie
this.confirmation.complete();
wypisać subskrybowanych słuchaczy, a tym samym uniknąć odniesień garki (wycieków pamięci)?
Edytowałem tytuł, ponieważ metoda 'complete()' nie jest częścią interfejsu Obervable. –