@angular/cli项目构建--组件
环境: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
布局
<!--导航条-->
<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">
<!--轮播图-->
<app-carousel></app-carousel>
<!--/轮播图-->
</div>
<div class="row">
<!--商品信息-->
<app-product></app-product>
<!--/商品信息-->
</div>
</div>
<!--/右侧-->
</div>
</div>
<!--/主要内容容器-->
<!--底部信息-->
<app-footer></app-footer>
<!--/底部信息-->
navBar.html
<!--Bootstrap导航条-->
<nav class="navbar navbar-inverse navbar-fixed">
<!--导航条内容容器-->
<div class="container">
<!--导航条头部-->
<div class="navbar-header">
<button class="navbar-toggle btn" data-toggle="collapse" data-target="#navbar-collapse-menu">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!--//商标/Logo-->
<a class="navbar-brand" href="javascript:void(0)">在线竞拍</a>
</div>
<!--/导航条头部-->
<!--导航条列表菜单-->
<div class="collapse navbar-collapse" id="navbar-collapse-menu">
<ul class="nav navbar-nav">
<li><a href="javascript:void(0)">关于我们</a></li>
<li><a href="javascript:void(0)">联系我们</a></li>
<li><a href="javascript:void(0)">网站地图</a></li>
</ul>
</div>
<!--/导航条列表菜单-->
</div>
<!--/导航条内容容器-->
</nav>
<!--/Bootstrap导航条-->
默认的全局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
<div class="container">
<hr>
<footer>
<div class="row">
<div class="col-md-12">
<p>Angular打造竞拍网站</p>
</div>
</div>
</footer>
</div> footer{
text-align: center;
}
search.html
<form role="form" name="searchForm">
<div class="form-group">
<label for="productTitle" class="control-label">商品名称 : </label>
<input id="productTitle" type="text" class="form-control" placeholder="商品名称">
</div>
<div class="form-group">
<label for="productPrice" class="control-label">商品价格 : </label>
<input id="productPrice" type="number" class="form-control" placeholder="商品价格">
</div>
<div class="form-group">
<label for="productCategory" class="control-label">商品类别 : </label>
<select id="productCategory" class="form-control"></select>
</div>
<div class="form-group">
<label for="productTitle" class="control-label">商品名称 : </label>
<input type="submit" class="btn btn-primary btn-block" value="搜索">
</div>
</form>
轮播图组件
<div class="carousel slide" data-ride="carousel">
<!--轮播图导航区域-->
<ol class="carousel-indicators">
<li class="active"></li>
<li></li>
<li></li>
</ol>
<!--/轮播图导航区域-->
<!--轮播图片区域-->
<div class="carousel-inner">
<div class="item active">
<img src="http://placehold.it/800x300" alt="carousel" class="slide-image">
</div>
<div class="item">
<img src="http://placehold.it/800x300" alt="carousel" class="slide-image">
</div>
<div class="item">
<img src="http://placehold.it/800x300" alt="carousel" class="slide-image">
</div>
</div>
<!--/轮播图片区域-->
<!--轮播图控制按钮-->
<a href="javascript:$('.carousel').carousel('prev')" class="left carousel-control">
<i class="glyphicon glyphicon-chevron-left"></i>
</a>
<a href="javascript:$('.carousel').carousel('next')" class="right carousel-control">
<i class="glyphicon glyphicon-chevron-right"></i>
</a>
<!--/轮播图控制按钮-->
</div> .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<string>
) {
}
}
在这个ts文件中进行商品(对象)的实例化(http replace here):
export class ProductComponent implements OnInit {
public products: Array<Product>;
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
<div class="col-sm-4 col-md-4 col-lg-4" *ngFor="let product of products">
<div class="thumbnail">
<img src="http://placehold.it/320x150" alt="商品图片">
<div class="caption">
<h4 class="pull-right">¥{{product.price}}</h4>
<h4><a>{{product.title}}</a></h4>
<p>{{product.desc}}</p>
</div>
<div>
<app-stars></app-stars>
</div>
</div>
</div>
星级评分组件
把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')
}
}
}
}
<app-stars [rating]="product.rating"></app-stars>
<p>
<i *ngFor="let star of stars" class="fa"
[class.fa-star]="star==='full'"
[class.fa-star-half-o]="star==='half'"
[class.fa-star-o]="star==='empty'"
></i>
<span>{{rating}}星</span>
</p>
@angular/cli项目构建--组件的更多相关文章
- @angular/cli项目构建--modal
环境准备: cnpm install ngx-bootstrap-modal --save-dev impoerts: [BootstrapModalModule.forRoot({container ...
- @angular/cli项目构建--Dynamic.Form
导入所需模块: ReactiveFormsModule DynamicFormComponent.html <div [formGroup]="form"> <l ...
- @angular/cli项目构建--animations
使用方法一(文件形式定义): animations.ts import { animate, AnimationEntryMetadata, state, style, transition, tri ...
- @angular/cli项目构建--interceptor
JWTInterceptor import {Injectable} from '@angular/core'; import {HttpEvent, HttpHandler, HttpInterce ...
- @angular/cli项目构建--路由3
路由定位: modifyUser(user) { this.router.navigate(['/auction/users', user.id]); } 路由定义: {path: 'users/:i ...
- @angular/cli项目构建--httpClient
app.module.ts update imports: [ HttpClientModule] product.component.ts import {Component, OnInit} fr ...
- @angular/cli项目构建--路由2
app.module.ts update const routes: Routes = [ {path: '', redirectTo: '/home', pathMatch: 'full'}, {p ...
- @angular/cli项目构建--路由1
app.module.ts import {BrowserModule} from '@angular/platform-browser'; import {NgModule} from '@angu ...
- @angular/cli项目构建--Dynamic.Form(2)
form-item-control.service.ts update @Injectable() export class FormItemControlService { constructor( ...
随机推荐
- LATEX教程(二)
插入图片 \documentclass{article} \usepackage{graphicx} \usepackage{Ctex} \title{插入图片} \author{yif} \begi ...
- 判断数A和数B中有多少个位不相同
1. A & B,得到的结果C中的1的位表明了A和B中相同的位都是1的位:2. A | B, 得到的结果D中的1的位表明了A和B在该位至少有一个为1的位,包含了A 与 B 都是1的位数,经过前 ...
- ajax发送js类型的数据
一.如图所示 var ids = [1,2,3,4,5,6,7] $.ajax({ url: requestUrl, type: 'delete', data: JSON.stringify(ids) ...
- python有哪些好的学习资料或者博客?
推荐Full Stack Python 有各种python资源汇总,从基础入门到各种框架web应用开发和部署,再到高级的ORM.Docker都有.以下是Full Stack Python 上总结的一些 ...
- eclipse修改项目默认编码为UTF-8
1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧 Text file encodin ...
- python的语法错误总结
1.keyerror一般是你使用字典里不存在的key产生的错误. 2.TypeError一般是使用的数据类型不符合要求 join函数要求a都是string
- GIT截图
GIT截图 今天首次成功用了GIT上传了JAVA代码,感觉一下次就能上传这么多代码,确实比在网页上方便.自己一开始根本摸不着头脑,不知道怎样使用GIT软件,但在学姐博客的指导下,在同学热情且耐心地指导 ...
- iOS_AFNetWorking框架分析
网络 — 你的程序离开了它就不能生存下去!苹果的Foundation framework中的NSURLConnection又非常难以理解, 不过这里有一个可以使用的替代品:AFNetworking.A ...
- linux下安装编译网卡驱动的方法
安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空. 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网 ...
- Docker 配置代理
最近在k8s上部署helm 老提示无法下载镜像,因为伟大的祖国的长城Firewall....导致k8s根本玩不了..... 第一步:配置系统代理 # vim .bashrc export http_p ...