美文网首页
9. 服务 service

9. 服务 service

作者: 晨曦Bai | 来源:发表于2019-08-01 16:31 被阅读0次

1. 创建购物车服务

    1. 生成购物车服务
      ng g service cart
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class CartService {

constructor() {}
}
    1. 定义 1 个 items 属性来把当前商品的列表存储在购物车中。
    1. 定义把商品添加到购物车、返回购物车商品以及清除购物车商品的方法。
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class CartService {
items = [];
addToCart(product) {
    this.items.push(product);
  }

  getItems() {
    return this.items;
  }

  clearCart() {
    this.items = [];
    return this.items;
  }
}
constructor() {}
}

2. 使用购物车服务

在商品详情(product-details)视图中添加一个“Buy”按钮。单击“Buy”按钮后,你将借助购物车服务来把当前商品添加到购物车中。


》 src/app/product-details/product-details.component.ts


    1. 导入购物车服务
    1. 注入购物车服务
    1. 定义 addToCart() 方法,该方法会当前商品添加到购物车中
    1. 修改商品详情模板,让它具有一个“Buy”按钮,用于把当前商品添加到购物车中。
    1. 要查看新的 "Buy" 按钮,请刷新应用并单击商品名称以显示其详细信息。

》src/app/product-details/product-details.component.ts


import { Componet, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { products }  from '../products';
import { CartService } from '../cart.service';

export  class  ProductDetailsComponent  implements  OnInit  {
contructor (
private route: ActivatedRoute,
private cartService: CartService
) {}

addToCart(product) {
window.alert('Your product has been added to the cart!');
this.cartService.addToCart(product);
}
}


》 src/app/product-details/product-details.component.html


<h2>Product Details</h2>
 <div *ngIf="product">
  <h3>{{ product.name }}</h3> 
 <h4>{{ product.price | currency }}</h4> 
 <p>{{ product.description }}</p> 
 <button (click)="addToCart(product)">Buy</button>  </div>

2. 创建购物车页面

    1. 生成购物车服务
      ng g component cart
  import  {  Component,  OnInit }  from  '@angular/core';
 @Component({
selector:  'app-cart',
templateUrl:  './cart.component.html',
 styleUrls:  ['./cart.component.css']
 })
  export  class  CartComponent  implements  OnInit {
  constructor()  {  }
 ngOnInit()  {
 }
 }

    1. 为购物车组件添加路由

》 app.module.ts


@NgModule({
imports: [
BrowserModule,
RouterModule.forRoot([
{path: ' ', component: ProductListComponent},
{path: 'products/:productId', component: ProductDetailsComponent},
{ path: 'cart', component: CartComponent },
])
]
})
    1. 创建 购物车链接
      点击top-bar 上面的“Checkout” button 链接到购物车页
      》top-bar.component.ts
<a [routerLink]="['/']">
  <h1>My Store</h1>
</a>

<a [routerLink]="['/cart']" class="button fancy-button"><i class="material-icons">shopping_cart</i>Checkout</a>
    1. 显示购物车商品(items)
      a. 导入 CartService 服务 from cart.service.ts
      b. 注入CartService到构造函数来管理购物车信息
      c. 定义items 属性,存放在购物车中的商品
      d. 使用购物车服务CartService的 getItems() 设置items
      e. 更新cart模板,显示购物车中每个商品的名称和价格。

》src/app/cart/cart.component.ts


import  {  Component  }  from  '@angular/core';  
import  {  CartService  }  from  '../cart.service';
export class CartComponent {
items;
constructor (
private cartService: CartService
) {
this.items=this.cartService.getItems();
}
}

》src/app/cart/cart.component.html


<h3>Cart</h3>  
<div  class="cart-item" *ngFor="let item of items">  <span>{{ item.name }}</span>  
<span>{{ item.price | currency }}</span>  
</div>

3. 检索运费价格

    1. 预定义商品运费价格
      预定义一个存放运费价格的json文件 src/assets/shipping.json
[
  {
    "type": "Overnight",
    "price": 25.99
  },
  {
    "type": "2-Day",
    "price": 9.99
  },
  {
    "type": "Postal",
    "price": 2.99
  }
]
    1. 为应用启用HttpClient
      在使用Angular 的HTTP 客户端之前,你必须先设置你的应用来使用 HttpClientModule。
      Angular 的HttpClientModule 中 注册了在整个应用中使用 HttpClient 服务的单个实例所需的服务提供商。你可以在服务中注入HttpClient 服务来获取数据并于外部API 和资源进行交互。
      a. 导入HttpClientModule from @angular/common/http
      b. 增加HttpClientModule 到应用module(@NgModule)的imports 数组,注册全局的HttpClient 提供商。

》src/app/app.module.ts


import  {  NgModule}  from  '@angular/core'; 
import  {  BrowserModule}  from  '@angular/platform-browser';  
import  {  RouterModule }  from  '@angular/router';  import  {  HttpClientModule }  from  '@angular/common/http'; 
 import  {  ReactiveFormsModule }  from  '@angular/forms';  
import  {  AppComponent  }  from  './app.component';  import  {  TopBarComponent  }  from  './top-bar/top-bar.component'; 
import  {  ProductListComponent  }  from  './product-list/product-list.component';  
import  {  ProductAlertsComponent  }  from  './product-alerts/product-alerts.component';  
import  {  ProductDetailsComponent  }  from  './product-details/product-details.component';  

@NgModule({
 imports:  [ 
 BrowserModule, 
HttpClientModule, 
ReactiveFormsModule,
RouterModule.forRoot([  
{ path:  '', component:  ProductListComponent  },  
{ path:  'products/:productId', component:  ProductDetailsComponent  }, 
 { path:  'cart', component:  CartComponent  }, 
 ])  
], 
declarations:  [  
AppComponent,  
TopBarComponent, 
 ProductListComponent, 
 ProductAlertsComponent, 
 ProductDetailsComponent, 
 CartComponent,  ],
 bootstrap:  [  AppComponent  ]
  })  
export  class  AppModule  {  }

    1. 为cart service启动HttpClient
      a. cart.service.ts 导入HttpClient from @angular/common/http
      b. 将HttpClient 注入到CartService 组件的构造函数中
      c. 定义get() 方法,通过http获取运费数据

》src/app/cart.service.ts


import  {  Injectable}  from  '@angular/core';  
import  {  HttpClient  }  from  '@angular/common/http;
export  class  CartService  { 
items =  []; 
 constructor(  private  http:  HttpClient  ) 
 {}  
addToCart(product) {
    this.items.push(product);
  }

  getItems() {
    return this.items;
  }

  clearCart() {
    this.items = [];
    return this.items;
  }
getShippingPrices() {
return this.http.get('/assets/shipping.json')
}
}

相关文章

  • 9. 服务 service

    1. 创建购物车服务 生成购物车服务ng g service cart 定义 1 个 items 属性来把当前商品...

  • angular服务

    服务 服务(factory & service) service服务:app.service(name,构造函数)...

  • Redis 启动,停止,重启

    启动服务: service redis start 停止服务: service redis stop 重启服务: ...

  • 浅谈Android Service

    Service 服务 什么是服务: A service is not a separate process and...

  • AMS分析「 Service管理 」

    ActivityManagerService服务负责管理Service服务,下面通过Service服务的启动流程来...

  • Android基础12

    service:服务。 开始服务 停止服务 通信,绑定活动 通信,解绑活动 新建service 布局文件 开始服务...

  • centos 6.X 常用命令

    service xxx restart 重启服务(xxx为服务名称) service httpd res...

  • 服务发现 - service discovery

    服务发现 - service discovery Service Discovery: Zookeeper vs ...

  • Service的简单使用

    前言 文本主要介绍Service的简单使用,了解Service的各种服务(前台服务,后台服务(本地服务,远程服务)...

  • zabbixApi4j-IT service

    IT service service.addependencies: 在IT服务之间添加依赖项service.ad...

网友评论

      本文标题:9. 服务 service

      本文链接:https://www.haomeiwen.com/subject/zmofdctx.html