Автономные компоненты Angular
Angular уже некоторое время (начиная с Angular 14) позволяет объявлять и использовать так называемые автономные компоненты. Это компоненты, не зависящие от модуля, и поэтому их можно использовать без необходимости объявлять в каком-либо модуле.
Как создать автономный компонент?
Создавать автономные компоненты в принципе очень просто. Достаточно установить флаг standalone
в декораторе компонента в true
. Но теперь, когда компонент больше не встроен в модуль, вам также придется импортировать все сервисы и другие используемые компоненты:
@Component({
standalone: true,
selector: 'app-my-component',
imports: [
RouterOutlet,
ReminderComponent
],
templateUrl: './app.my-component.html',
styleUrls: ['./app.my-component.css']
})
export class AppComponent {
}
Объявление imports
определяет, какие другие компоненты может использовать данный компонент. Это могут быть как другие Ng-модули, так и другие самостоятельные компоненты.
Автономный компонент уже имеет всю информацию, чтобы действовать как независимая единица. Он не зависит от модуля и не должен быть объявлен в модуле. Вы можете представить себе автономный компонент как модуль и компонент, объединенные в одно целое.
Bootstrap Angular с помощью автономного компонента
До появления автономных компонентов вы должны были указать стартовый модуль в main.ts
, который, в свою очередь, должен был объявить стартовый компонент. Обычно это были AppModule
и AppComponent
, если вы создавали проект с ng.
С появлением автономных компонентов приложение теперь может быть загружено с помощью автономного компонента. Для этого существует новый метод: boostrapApplication
. Первым аргументом этой команды является стартовый компонент, в качестве второго аргумента вы можете указать провайдеров сервисов, используемых в приложении, которые ранее регистрировались в AppModule
.
// main.ts
import...
bootstrapApplication(AppComponent, {
providers: [
importProvidersFrom(HttpClientModule),
provideRouter(APP_ROUTES),
provideAnimations()
]
});
Это означает, что центральный AppModule
больше не нужен для Angular-приложения. Как вы также можете видеть здесь, вы можете импортировать провайдеры существующих ng-модулей с помощью команды importProvidersFrom
.
Это означает, что модульный и автономный подходы могут сосуществовать. Таким образом, вам не придется принимать решение о выборе подхода в одночасье, а совместимость с существующим кодом модулей по-прежнему гарантирована.
Благодарю за прочтение!