组件不该该直接获取或保存数据,它们不该该了解是否在展现假数据。 它们应该聚焦于展现数据,而把数据访问的职责委托给某个服务。css
此次将建立一个 XuxuService,依靠 Angular 的依赖注入机制把它注入到 ServeDemoComponent 的构造函数中。html
服务是在多个“互相不知道”的类之间共享信息的好办法。bash
在终端输入:app
ng generate service 服务名
复制代码
我输入的以下,即个人服务名为xuxu:ide
ng generate service xuxu
复制代码
执行完后,src/app/xuxu.service.ts 中自动生成 XuxuService函数
import { XuxuClass } from './xuxu-class';
复制代码
export class XuxuService {
constructor() { }
getXuxuTestMock(): XuxuClass[] {
let data = [1,2,3]
return data;
}
}
复制代码
在终端输入:ui
ng generate service 服务名 --module=app
复制代码
ng generate component service-demo
复制代码
import { Component, OnInit } from '@angular/core';
import { XuxuService } from '../xuxu.service';
@Component({
selector: 'app-service-demo',
templateUrl: './service-demo.component.html',
styleUrls: ['./service-demo.component.css']
})
export class ServiceDemoComponent implements OnInit {
constructor(private xuxuService: XuxuService) { }
ngOnInit() {
// 调用getXuxuTestMock方法
this.getXuxuTestMock();
}
// 初始化xuxuTestMock
xuxuTestMock
getXuxuTestMock(): void {
this.xuxuTestMock = this.xuxuService.getXuxuTestMock();
console.log('xuxuTestMock:', this.xuxuTestMock)
}
}
复制代码
<div>
<h2>在【服务】中拿到的数据:</h2>
<ul>
<li *ngFor="let i of xuxuTestMock" (click)="test(i)">{{i.name}}</li>
</ul>
</div>
复制代码