Angular 2 + 折腾记 :(3)初步了解服务及使用
前言不探究高深理论,只探究实际使用,有更好的写法或者经验请指出; # 什么是服务 简言之:就是资源获取,以及通讯逻辑处理的地方; Angular2的服务引入了依赖注入这个概念。详情看这个; 【依赖注入:中】 我看github上有些项目的 “`Typescript // 服务类必须引入这个 // 自己封装的鉴权 // 我这里存放了接口请求地址还有一些公用信息。nginx做反向代理所以不走baseurl // 不可忘记括号,任何装饰器都一样,防止莫名的错误 // DI(依赖注入) // 获取故障提示列表 // 获取单个车辆的故障列表 // 根据车辆ID获取单车信息 // 清除故障码 // 这里的每个接口返回一个可观察的订阅对象 **那么我们应该如何让服务可以正常使用呢?**
大致有那么两种;
- 模块内注入,整个模块内的`components`皆可以使用
```Typescript
import { NgModule } from '@angular/core'; -- 内置
// 除了根模块用BrowserModule,其他一些模块需要用到一些内置指令(*ngIf,*ngFor这些的)必须引入这个 -- 内置
import { CommonModule } from '@angular/common';
// 路由模块 -- 内置
import { RouterModule } from '@angular/router';
// 表单模块,及响应式表单模块 -- 内置
import { FormsModule,ReactiveFormsModule } from '@angular/forms';
import { VehicleFaultRoutes } from './vehicle-fault.routes';
// service
import { VehicleFaultService } from './vehicle-fault.service';
// component
import { VehicleFaultComponent } from './vehicle-fault.component';
import { ListComponent } from './list/list.component';
import { DetailComponent } from './detail/detail.component';
import { CleanComponent } from './clean/clean.component';
// public module
import { MitPipeModule } from '../../../widgets/mit-pipe/mit-pipe.module';
import { MitDataTableModule } from '../../../widgets/mit-data-table/mit-data-table.module';
import { MitAlertModule } from '../../../widgets/mit-alert/mit-alert.module';
import { MitLoadingModule } from '../../../widgets/mit-loading/mit-loading.module';
import { DepartmentSelectModule } from './../../../share/department-select/department-select.module';
const mitModule = [
MitPipeModule,MitDataTableModule,MitAlertModule,MitLoadingModule,DepartmentSelectModule
];
@NgModule({
imports: [ // 引入相关的模块
...mitModule,FormsModule,RouterModule,CommonModule,VehicleFaultRoutes
],declarations: [VehicleFaultComponent,ListComponent,DetailComponent,CleanComponent],// 声明组件
providers: [VehicleFaultService] // 服务注入
// providers : [{provide:vfualt,useClass:VehicleFaultService}] // 这是一种别名的写法
})
export class VehicleFaultModule { }
```
<div class="se-preview-section-delimiter"></div>
```Typescript
// 引入一些生命周期的控制,组件值传递响应接口等
import { Component,OnInit,AfterContentInit,OnChanges,SimpleChanges,OnDestroy } from '@angular/core';
// 引入路由模块
import { Router,ActivatedRoute } from '@angular/router';
// 基类
import { MitDataTableBase } from '../../../../widgets/mit-data-table/mit-data-table-base';
// 服务
import { VehicleFaultService } from '../vehicle-fault.service';
import { EventsService } from '../../../../services/events-service.service';
// 动画
import { fadeIn } from '../../../../animation/fadeIn';
@Component({
selector: 'app-list',templateUrl: './list.component.html',styleUrls: ['./list.component.scss'],animations: [fadeIn]
})
export class ListComponent extends MitDataTableBase implements OnInit,OnDestroy {
private getRenderList: any;
private currentItem: any;
private showAlert = false;
constructor(
private vehicleFaultService: VehicleFaultService,private eventsService: EventsService,private router: Router,private activatedRoute: ActivatedRoute
) {
super(router,activatedRoute);
}
ngOnInit() {
}
}
// 若是要使用别名注入,还需要引入Inject,从core里面 -- 在components
// 然后放在construcor里面,写法如下
// constructor(@Inject('vfault') private vehicleFaultService: any)
// 这样就可以使用了,且在components内不需要引入对应的服务!!!!
组件内用 // 服务
import { vehicleFaultService } from '../vehicle-fault.service';
import { EventsService } from '../../../../services/events-service.service';
// 动画
import { fadeIn } from '../../../../animation/fadeIn';
@Component({
selector: 'app-list',animations: [fadeIn],providers: [vehicleFaultService,EventsService]
})
总结
最最重要的。。还是多查阅官方的API,然后动手实践,才能让你上手快起来。。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – Focus Protractor / Webdriver浏览器测试窗口
- Axis服务发布与调用技术
- 通过Cygwin创建的文件(调用shell脚本)没有正确的Windows权限
- bootstrap checkbox radio 与label对不齐的问题
- twitter-bootstrap – 水平表单 – 设置控件标签宽度的最佳
- amazon-web-services – Amazon AWS ECS Docker端口无法正
- bootstrap-table 分页
- Scala:隐式参数中的错误
- Crontab不执行bash脚本
- scala – Spark:java.io.NotSerializableException:org.a