Appearance
TypeScript class Не подтверждено командой
Общие правила
✅ Standalone
✅ OnPush
✅ Инициализируй свойства при объявлении — избегай отложенной инициализации (ngOnInit и т.д.)
✅ Подписки только через async. Или конвертация в signal (toSignal). Минимум ручных subscribe()
✅ Single File Component (SFC) – для небольших компонентов держи шаблон и стили в одном файле
Signals API
Используй современные сигнальные API Angular:
inputoutput/outputFromObservablemodelsignalcomputedeffectviewChild/viewChildrencontentChild/contentChildren
ℹ️
Многие API поддерживают required
Lifecycle hooks
❌ Старайся избегать lifecycle хуков:
ngOnInitngOnChangesngOnDestroyngDoCheckngAfterContentInitngAfterContentCheckedngAfterViewInitngAfterViewCheckedafterEveryRenderafterNextRender
✅ Альтернативы
- инициализировать компонент в
constructor, вместоngOnInit computed()иeffect()viewChild()/viewChildren()takeUntilDestroyed()signalиObservableкак основной инструмент
Интерфейсы lifecycle
Если используешь lifecycle метод — обязательно реализуй интерфейс:
✅
ts
export class UserPage implements OnInit {
ngOnInit() {}
}❌
ts
export class UserPage {
ngOnInit() {}
}