{% raw %}

Angular 服务示例

原文: https://howtodoinjava.com/angular/angular2-service/

通过示例学习创建 Angular 服务并将服务作为全局依赖项(通过模块)与局部依赖项(通过组件)导入。

  1. Table of Contents
  2. Create Service
  3. Global service vs Local Service Injection
  4. Demo

创建服务

在所需位置创建一个新文件calc.service.ts,并将以下代码放入其中。 CalcService是服务名称。

  1. import { Injectable } from '@angular/core';
  2. @Injectable({
  3. providedIn: 'root'
  4. })
  5. export class CalcService {
  6. constructor() { }
  7. }

以上服务非常完整,可以在应用组件中使用。

使用 Angular CLI

如果使用 Angular CLI,创建服务很容易。 这只是一个命令,可以完成所有工作。 它将像上面的示例一样生成服务代码。

  1. $ ng g s service/calc --flat
  2. //Other useful options
  3. --force = override
  4. --spec=false = dont generate spec file
  5. --dry-run = dont touch code if it has been updated already.

全局服务与本地服务注入

要注入服务,您有两个选择。

1)注入为“全局服务”

要作为全局服务注入,请将服务注入到根模块中。

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { AppComponent } from './app.component';
  4. import { CalcService } from './service/calc.service';
  5. @NgModule({
  6. declarations: [
  7. AppComponent
  8. ],
  9. imports: [
  10. BrowserModule
  11. ],
  12. providers: [CalcService],
  13. bootstrap: [AppComponent]
  14. })
  15. export class AppModule { }

2)注入为“本地服务”

要作为本地服务注入,请直接将服务注入组件

  1. import { Component } from '@angular/core';
  2. import { CalcService } from './service/calc.service';
  3. @Component({
  4. selector: 'app-root',
  5. templateUrl: './app.component.html',
  6. styleUrls: ['./app.component.css'],
  7. providers: [CalcService]
  8. })
  9. export class AppComponent {
  10. title = 'app';
  11. constructor(calc:CalcService){
  12. //Use calc
  13. }
  14. }

演示

1)添加服务方法

为了演示CalcService的用法,我们在服务中定义一个新方法,并在app.component.ts中使用它。

我添加了方法add(),该方法将剩余参数用作数字数组。 然后,将所有数字相加并返回总和。

  1. import { Injectable } from '@angular/core';
  2. @Injectable({
  3. providedIn: 'root'
  4. })
  5. export class CalcService {
  6. constructor() { }
  7. public add(...params: number[]): number {
  8. let result = 0;
  9. for (let val of params) {
  10. result += val;
  11. }
  12. return result;
  13. }
  14. }

2)将服务导入到组件并使用该方法更新模型

我创建了一个新的模型属性'sum',我们将使用服务方法add()的返回值进行更新。

  1. import { Component } from '@angular/core';
  2. import { CalcService } from './service/calc.service';
  3. @Component({
  4. selector: 'app-root',
  5. templateUrl: './app.component.html',
  6. styleUrls: ['./app.component.css']
  7. })
  8. export class AppComponent {
  9. title = 'app';
  10. sum: number = 0;
  11. constructor(calc:CalcService){
  12. this.sum = calc.add(1,2,3,4);
  13. }
  14. }

3)更新视图 HTML

现在,最后,使用新添加的模型属性sum更新视图html文件。

  1. <h1>
  2. Welcome to {{ title }}!
  3. Sum is {{sum}}
  4. </h1>

4)运行应用

现在,使用命令'ng serve'运行该应用,并检查'http://localhost:4200/'的输出。

245.md - 图1

Angular 2 服务输出

将我的问题放在评论部分。

学习愉快!

源码下载

{% endraw %}