Если вам не нужен бесконечный таймер, то проще будет от него отказаться. По поводу решения "после изменения isBlocked на true нужно сразу же слать запрос" - создайте свою последовательность, которую вы будете в нужный момент итерировать с нужным вам значением (код для примера):
class SomeComponent {
private _isBlocked$$: Subject<boolean> = new Subject();
public isBlocked$: Observable<boolean> = this._isBlocked$$.asObservable();
public ngOnInit(): void {
this.isBlocked$
.switchMap((isBlocked: boolean) =>
isBlocked ? this.http.post(apiPath) : Observable.of(null))
.subscribe((data: Array<any>) => {
if (data !== null) {
this.notise = this.mapData(data);
}
});
}
public someMethod(bool: boolean): void {
this._isBlocked$$.next(bool);
}
}
Если все-таки хотите оставить таймер и остановить в конкретный момент, то подойдет takeUntil:
Observable.timer(0, 2000).takeUntil(this.isBlocked$)