Ваш код содержит логическую ошибку, я думаю, что это просто опечатка.
this.flag != this.flag;
Вы, вероятно, имели в виду
this.flag = !this.flag;
Кстати, ваш метод получения кликов по документам (не связанный с вашей проблемой) не является угловым, и вы можете столкнуться с проблемами, когда страница не обновляется. Попробуйте вместо этого использовать HostListener:
@HostListener('document:click', ['$event'])
clicked(event) {
..
}
Отмена подписки на запрос HTTP должна отменить запрос. Однако у вас нет гарантированного способа узнать, действительно ли запрос поступил на сервер или нет - сервер, возможно, уже ответил к тому времени, когда вы отписались.
Вот очищенный стек стека: https://stackblitz.com/edit/angular-fzlzcf