环境:nodeJS,git,angular/cli
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g @angular/cli@1.4.9
ng new angularDemo
ng -v
ng set --global packageManager=cnpm
npm install jquery --save
npm install bootstrap --save
bootstrap style 如果用cnpm安装则需要npm安装才可在idea智能提示
npm install @types/jquery --save-dev
npm install @types/bootstrap --save-dev
npm install FortAwesome/Font-Awesome --save//图标样式fa
使jQuery&&Bootstrap生效导入(.angular-cli.json)
"styles": [ "styles.css", "../node_modules/_bootstrap@3.3.7@bootstrap/dist/css/bootstrap.min.css" ], "scripts": [ "../node_modules/_jquery@3.2.1@jquery/dist/jquery.min.js", "../node_modules/_bootstrap@3.3.7@bootstrap/dist/js/bootstrap.min.js" ],
启动项目开发环境
ng serve or npm run start
生成组件
ng generate component navBar
ng g c search product stars foot
ng g c new-component --module app :如果有多个module
布局
navBar.html
默认的全局css文件是/src/style.css
当然也可以在配置文件中更改或者添加新的css文件
/* You can add global styles to this file, and also import other style files */ @import "../node_modules/bootstrap/dist/css/bootstrap.css";
@import "../node_modules/font-awesome/css/font-awesome.css";
每一个组件对应的css样式我们应该分开写,比如navbar的css写在navbar.component.css文件中
foot.html
footer{ text-align: center;}
search.html
轮播图组件
.slide-image{ width:100%; }
商品详情组件
product.component.ts
export class Product { constructor( public id: number, public title: string, public price: number, public rating: number, public desc: string, public categories: Array) { }}
在这个ts文件中进行商品(对象)的实例化(http replace here):
export class ProductComponent implements OnInit { public products: Array; constructor() { } ngOnInit() { this.products = [ new Product(1, '第一个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']), new Product(2, '第二个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']), new Product(3, '第三个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']), new Product(4, '第四个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']), new Product(5, '第五个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']), new Product(6, '第六个商品', 899, 3.5, '这是一个垃圾电脑', ['电子产品', '家电']) ] }}
在模块实例化的时候获取到商品对象列表,并传递到component模板中
ngOnInit()
方法会在component实例化的时候自动调用一次,这个知识点稍后会更详细讲到
product.component.html
星级评分组件
把Production component
的product.rating
注入到Star Component
中
export class StarsComponent implements OnInit { @Input() public rating: number; public stars = []; constructor() { } ngOnInit() { const full: number = Math.floor(this.rating); const half: number = Math.ceil(this.rating - full); const empty: number = 5 - full - half; for (let i = 0; i < 5; i++) { if (i < full) { this.stars.push('full'); } else if (i === full && half !== 0) { this.stars.push('half') } else { this.stars.push('empty') } } }}
{ {rating}}星