@angular/cli项目构建--组件

环境:nodeJS,git,angular/cli

npm install -g cnpm

cnpm install -g @angular/cli

ng new angularDemo

ng -v

ng set --global packageManager=cnpm

npm install jquery --save

npm install bootstrap --save

npm install @type/jquery --save-dev

npm install @type/bootstrap --save-dev

启动项目开发环境

ng serve or npm run start

生成组件

ng generate component navBar

ng g c search  product  stars foot

布局

<!--导航条-->
<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";

每一个组件对应的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 componentproduct.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>
时间: 2024-10-07 20:04:38

@angular/cli项目构建--组件的相关文章

@angular/cli项目构建--路由1

app.module.ts import {BrowserModule} from '@angular/platform-browser'; import {NgModule} from '@angular/core'; import {AppComponent} from './app.component'; import {NavBarComponent} from './nav-bar/nav-bar.component'; import {FooterComponent} from '.

@angular/cli项目构建--路由2

app.module.ts update const routes: Routes = [ {path: '', redirectTo: '/home', pathMatch: 'full'}, {path: 'home', component: HomeComponent}, {path: 'login', component: LoginComponent}, {path: '**', component: Code404Component} ]; nav-bar.compoonent.ht

@angular/cli项目构建--httpClient

app.module.ts update imports: [ HttpClientModule] product.component.ts import {Component, OnInit} from '@angular/core'; import {HttpClient} from '@angular/common/http'; import {Observable} from 'rxjs/Observable'; import * as _ from 'lodash'; @Compone

@angular/cli项目构建--modal

环境准备: cnpm install ngx-bootstrap-modal --save-dev impoerts: [BootstrapModalModule.forRoot({container: ducument.body})] usage: import { Component } from '@angular/core'; import { DialogService } from "ngx-bootstrap-modal"; @Component({ selector:

@angular/cli项目构建--Dynamic.Form

导入所需模块: ReactiveFormsModule DynamicFormComponent.html <div [formGroup]="form"> <label [attr.for]="formItem.key">{{formItem.label}}</label> <div [ngSwitch]="formItem.controlType"> <input *ngSwitchCas

Angular CLI的简单使用(2)

刚才创建了myApp这个项目,看一下这个项目的文件结构.    项目文件概览 Angular CLI项目是做快速试验和开发企业解决方案的基础. 你首先要看的文件是README.md. 它提供了一些如何使用CLI命令的基础信息. 如果你想了解 Angular CLI 的工作原理,请访问 Angular CLI 的仓库及其Wiki. 有些生成的文件你可能觉得陌生.接下来就讲讲它们. src文件夹 你的应用代码位于src文件夹中. 所有的Angular组件.模板.样式.图片以及你的应用所需的任何东西都

Angular Cli 设置 淘宝的NPM 镜像

Angular CLI 是 构建angular2 项目的 脚手架工具. 安装Angular-Cli  需要先安装 Node.js. 大家可以去 node.js 官网下载. 说明:因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常.所以我们需要适用淘宝的镜像. http://registry.npm.taobao.org/ 设置方法如下:npm install -g cnpm  --registry=https://registry.npm.taobao.org 然后使用 cnpm 

Angular环境准备和Angular cli

Angular4.0来了,更小,更快,改动少 接下来为Angular4.0准备环境和学会使用Angular cli项目 1.环境准备: 1)在开始工作之前我们必须设置好开发环境 如果你的机器上还没有安装Node.js和npm,请安装他们 (这里特别推荐使用淘宝的镜像cnpm,记得以后把npm的指令改为cnpm就可以了) npm install -g cnpm --registry=https://registry.npm.taobao.org 然后我们可以通过node -v和cnpm -v来分别

内网安装angular/cli

博主在外网搭建angular/cli项目迁移到内网时无法启动npm start,于是找了好多方法探索,因而发现时angular/cli需要全局安装,外网只需要npm i -g @angular/cli就好了,因为有npm帮你去下载:然而我这是在内网开发,于是想破了头找了网上的方法:window上亲测有效 Install Angular CLI Offline Install it in online machine and copy %appdata%/npm/node_modules/@ang