Дочерние компоненты в 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
.
Выведите их значения в темплейте дочернего
компонента.