Решил сегодня почитать, что пишут в Ангуляр комьюнити Хабра, и увидел сильно популярный пост с аж 51 лайком и 71 закладкой.
Начал читать и был удивлен примерами. Автор с уверенностью говорит, как писать на Ангуляр грамотно, и при этом приводит плохие практики в качестве примеров. Я дошел до примера с RxJS, который меня немного триггернул.
Не буду разбирать все кейсы указанные в данном посте, покажу лишь самый плохой пример который меня немного тригернул:
Автор условно говорит, что у нас есть плохой пример использования:
this.http.get('/api/data').subscribe((data) =>; {
this.data = data; // Что если запрос не вернётся?
});и затем приводит хороший пример с сигналами и RxJs:
readonly data = signal([]);
readonly error = signal(null);
loadData() {
this.http.get('/api/data').pipe(
tap(() =>; this.error.set(null)), // Сбрасываем предыдущую ошибку перед загрузкой
catchError((err) =>; {
this.error.set('Не удалось загрузить данные');
return of([]); // Возвращаем пустой массив, чтобы поток не прерывался
})
).subscribe((result) =>; {
this.data.set(result);
});
}я даже не буду указывать на количество антипатернов и плохих практик в данном примере, я просто покажу правильный пример с сигналами и RxJs:
interface State<T = object> {
data: T[];
error: string | null;
}
@Component({...})
export class BestRxJs {
private http = inject(HttpClient);
private loadDataAction$ = new Subject<void>();
private state$ = this.loadDataAction$.pipe(
switchMap(() =>
this.http.get<State[]>('/api/data').pipe(
map((result) => ({ data: result, error: null })),
catchError(() => of({ data: [], error: 'Не удалось загрузить данные' })),
startWith({ data: [], error: null })
)
),
shareReplay({ bufferSize: 1, refCount: true })
);
readonly private state = toSignal(this.state$, {
initialValue: { data: [], error: null }
});
readonly protected data = computed(() => this.state().data);
readonly protected error = computed(() => this.state().error);
protected loadData(): void {
this.loadDataAction$.next();
}
}Этот пост для новичков, которые, начитавшись популярных статей, могут начать применять вредные практики.







