tôi xây dựng một dịch vụ hộp thoại xác nhận đơn giản (góc 2) với phương pháp này:Subject.complete() có hủy đăng ký tất cả người nghe không?
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();
}
Cách sử dụng:
confirmationService.confirm().subscribe(() => alert("CONFIRMED"));
Nếu ai đó sử dụng dịch vụ này, anh nhận được một đề (mà là một quan sát) trở lại và có thể "đăng ký()" với nó. Đăng ký được gọi khi "có" được nhấp và do đó xác nhận đã được đưa ra ...
Đây có phải là cách chính xác để thực hiện việc này không? Và quan trọng hơn ... sẽ gọi tới số
this.confirmation.complete();
hủy đăng ký người nghe đã đăng ký và do đó ngăn chặn bất kỳ tham chiếu kéo dài nào (rò rỉ bộ nhớ)?
Tôi đã chỉnh sửa tiêu đề vì phương thức 'complete()' không phải là một phần của giao diện của Obervable. –