AngularProjectPlus
# Установить Angular CLI глобально (можно использовать ng -v для проверки установленной версии)
npm install -g @angular/cli
ng new angularProjectPlus
Если добавить параметр --routing
после создания проекта, в каталоге app
появится дополнительный файл конфигурации маршрутизации app-routing.module.ts
. Одновременно файл app.module.ts
автоматически импортирует сгенерированный файл конфигурации маршрутизации, а файл app.component.html
импортирует <router-outlet></router-outlet>
(обратите внимание, что этот параметр не использовался при создании этого проекта; мы сделаем это вручную позже для обучения).
cd angularProjectPlus
ng serve --open
ng serve
запускает сервер разработки, отслеживает изменения файлов и автоматически перестраивает приложение при изменении этих файлов. Параметр --open
(или -o
) автоматически открывает браузер и переходит на http://localhost:4200/
. Приложение приветствует вас сообщением: Welcome to app!Через файл angular-cli.json
в корневом каталоге можно обнаружить, что файл запуска находится в папке src
в файле main.ts
, а файл входа — в index.html
.
npm install jquery --save
npm install @types/jquery --save-dev
npm install bootstrap --save
npm install @types/bootstrap --save-dev
После установки пакетов @types/jquery
и @types/bootstrap
необходимо изменить файл .angular-cli.json
, чтобы TypeScript мог распознавать jQuery и Bootstrap. Для этого нужно изменить "scripts": []
на следующее:
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/bootstrap/dist/js/bootstrap.min.js"
]
Также необходимо изменить "styles": ["styles.css"]
на:
"styles": [
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.min.css"
],
После завершения установки необходимо изменить tsconfig.app.json
в папке src
, добавив jQuery в массив types
.
ng g component navbar
ng g component footer
ng g component carousel
ng g component product
ng g component stars
ng g component search
ng g component home
ng g component product-detail
Эти команды генерируют восемь компонентов для страницы. Каждый компонент имеет соответствующую HTML-страницу компонента, которую можно добавить в файл app.component.html
:
<app-navbar></app-navbar>
<div class="container">
<div class="row">
<div class="col-md-3">
<app-search></app-search>
</div>
<div class="col-md-9">
<div class="row carousel-container">
<app-carousel></app-carousel>
</div>
<div class="row">
<app-product></app-product>
</div>
</div>
</div>
</div>
<app-footer></app-footer>
Компоненты, которые являются динамическими и требуют цикла данных, используют тег цикла Angular *ngFor. Передача значений между родительскими и дочерними компонентами осуществляется через Angular @Input()
. На этом работа с компонентами страниц на основе Angular завершается.
--routing
, будет сгенерирован следующий файл. Этот проект был написан вручную, и достаточно изменить файл app.module.ts
)import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
В массиве const routes: Routes = []
можно настроить собственный маршрут. Файл app.module.ts
также необходимо изменить:
import {RouterModule, Routes} from "@angular/router";
const routeConfig: Routes = [
{path: '', component: HomeComponent},
{path: 'product/:id', component: ProductDetailComponent}
];
imports: [
RouterModule.forRoot(routeConfig)
],
Говоря о маршрутах, стоит упомянуть проблему передачи параметров между страницами. К счастью, Angular позволяет настраивать параметры маршрута:
<a [routerLink]="['/product', product.id]">{{product.title}}</a>
На странице сведений можно получить идентификатор и отобразить его следующим образом:
export class ProductDetailComponent implements OnInit {
public productId : number;
constructor(private routerInfo: ActivatedRoute) {}
ngOnInit() {
//----получаем id и присваиваем его productId
this.productId=this.routerInfo.snapshot.params["id"]
//----------------------------
}
}
HTML-компонент страницы:
Товар ID равен {{productId}}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )