Дочерние компоненты в Angular
Как упоминалось в самом начале учебника, в Angular весь проект разбивается на компоненты. В предыдущих уроках мы работали только с основным компонентом, созданным по умолчанию. Давайте теперь научимся создавать дочерние компоненты.
Код новых компонентов автоматически
генерируется Angular с помощью специальной
команды терминала: generate component.
После слова component нужно написать
имя нашего нового компонента. Пусть мы
хотим сгенерировать компонент user:
ng generate component user
После выполнения команды мы увидим, что у
нас появилась новая папка app/user.
В ней будут находиться все стандартные
файлы компонента.
В файле с компонентом user.component.ts
будет автоматически создан декоратор
компонента:
@Component({
selector: 'app-user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.css']
})
Также в этом файле будет автоматически создан класс компонента:
export class UserComponent {
}
Теперь наш дочерний компонент нужно
подключить к родительскому. Пусть родительским
будет компонент app, изначально
присутствующий при установки фреймворка.
Импортируем в него наш компонент:
import { UserComponent } from './user/user.component';
В декораторе компонента в ключе imports
укажем наш имортированный компонент:
@Component({
selector: 'app-root',
imports: [UserComponent], // тут
templateUrl: './user.component.html',
styleUrls: ['./user.component.css']
})
Теперь мы можем вывести содержимое дочернего
компонента в родительском. Для этого в
файле с темплейтом родителя нужно написать
специальный тег, имя которых задано в
свойстве selector декоратора @Component
потомка. В нашем случае это тег app-user.
Напишем его в темлейте родителя:
some text
<app-user></app-user>
Сгенерируйте компонент ProductComponent.
Подключите этот компонент к главному
компоненту вашего проекта.
Внесите изменения в темплейт дочернего компонента. Убедитесь, что они применятся в браузере.
Поменяйте CSS стили дочернего компонента. Убедитесь, что они применятся в браузере.
В дочернем компоненте сделайте свойства
name и price. Выведите их
значения в темплейте дочернего компонента.