网站首页 > 基础教程 正文
本章将介绍的基本CRUD操作是使用Angular 2从Web服务读取数据。
例
在此示例中,我们将定义一个数据源,它是产品的简单json文件。接下来,我们将定义一个服务,该服务将用于从json文件中读取数据。接下来,我们将在主app.component.ts文件中使用此服务。
步骤1-首先,我们在Visual Studio代码中定义product.json文件。
在products.json文件中,输入以下文本。这将是将从Angular JS应用程序中获取的数据。
[{
"ProductID": 1,
"ProductName": "ProductA"
},
{
"ProductID": 2,
"ProductName": "ProductB"
}]
步骤2-定义一个接口,它将是用于存储来自products.json文件的信息的类定义。创建一个名为products.ts的文件。
步骤3-在文件中插入以下代码。
export interface IProduct {
ProductID: number;
ProductName: string;
}
上面的接口将ProductID和ProductName的定义作为接口的属性。
步骤4-在app.module.ts文件中包括以下代码-
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { HttpModule } from '@angular/http';
@NgModule ({
imports: [ BrowserModule,HttpModule],
declarations: [ AppComponent],
bootstrap: [ AppComponent ]
})
export class AppModule { }
步骤5-在Visual Studio代码中定义一个products.service.ts文件
步骤6-在文件中插入以下代码。
import { Injectable } from '@angular/core';
import { Http , Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/do';
import { IProduct } from './product';
@Injectable()
export class ProductService {
private _producturl='app/products.json';
constructor(private _http: Http){}
getproducts(): Observable<IProduct[]> {
return this._http.get(this._producturl)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log(JSON.stringify(data)));
}
}
关于上述程序,需要注意以下几点。
- 从'@ angular / http'语句导入的{Http,Response}用于确保可以使用http函数从products.json文件获取数据。
- 以下语句用于利用可用于创建Observable变量的Reactive框架。Observable框架用于检测http响应中的任何更改,然后可以将这些更改发送回主应用程序。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/do';
- 该类中的语句private _producturl ='app / products.json'用于指定我们的数据源的位置。如果需要,它也可以指定Web服务的位置。
- 接下来,我们定义Http类型的变量,该变量将用于从数据源获取响应。
- 从数据源获取数据后,我们将使用JSON.stringify(data)命令将数据发送到浏览器中的控制台。
步骤7-现在在app.component.ts文件中,放置以下代码。
import { Component } from '@angular/core';
import { IProduct } from './product';
import { ProductService } from './products.service';
import { appService } from './app.service';
import { Http , Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Component ({
selector: 'my-app',
template: '<div>Hello</div>',
providers: [ProductService]
})
export class AppComponent {
iproducts: IProduct[];
constructor(private _product: ProductService) {
}
ngOnInit() : void {
this._product.getproducts()
.subscribe(iproducts => this.iproducts = iproducts);
}
}
在这里,代码中的主要内容是订阅选项,该选项用于侦听Observable getproducts()函数以侦听来自数据源的数据。
现在保存所有代码,并使用npm运行应用程序。转到浏览器,我们将看到以下输出。
在控制台中,我们将看到正在从products.json文件检索的数据。
猜你喜欢
- 2024-11-14 angular8 ui-grid升级方案 angular8升级angular10
- 2024-11-14 angular8 日常开发避坑指南(30个)
- 2024-11-14 Angular 11.1.0-next.2 发布 angular 11发布的影响
- 2024-11-14 最近写Vue,真是累死人了!没有Angular爽,谁能帮帮我?[吐槽]
- 2024-11-14 「Angular项目实战」Angular2+如何去除URL中的#号
- 2024-11-14 Angular9构建一个后台管理系统(二)
- 2024-11-14 AngularJs入门,一个简单的demo angular实战
- 2024-11-14 Angular1升级到Angular2之组件样式封装
- 2024-11-14 逆袭之路系列-AngularJS 1.2版本编程入门-01
- 2024-11-14 Angular9构建一个后台管理系统(一)
- 06-18单例模式谁都会,破坏单例模式听说过吗?
- 06-18Objective-c单例模式的正确写法「藏」
- 06-18单例模式介绍(单例模式都有哪些)
- 06-18前端设计-单例模式在实战中的应用技巧
- 06-18PHP之单例模式(php单例模式连接数据库)
- 06-18设计模式:单例模式及C及C++实现示例
- 06-18python的单例模式(单例 python)
- 06-18你认为最简单的单例模式,东西还挺多
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)