发表于: 2021-03-18 21:36:11

1 1092


今天完成的事情:

Angular 中的依赖注入

依赖,是当类需要执行其功能时,所需要的服务或对象

在hero-list.component.ts中

export class HeroListComponent {
  heroes = HEROES;
}


创建和注册可注入的服务

ng generate service heroes/hero

生成添加

import { Injectable } from '@angular/core';
import { HEROES } from './mock-heroes';

@Injectable({
  // we declare that this service should be created
  // by the root application injector.
  providedIn: 'root',
})
export class HeroService {
  getHeroes() { return HEROES; }
}


注入服务

在hero-list.component 中

import { Component } from '@angular/core';
import { Hero } from './hero';
import { HeroService } from './hero.service';

@Component({
  selector: 'app-hero-list',
  template: `
    <div *ngFor="let hero of heroes">
      {{hero.id}} - {{hero.name}}
    </div>
  `
})
export class HeroListComponent {
  heroesHero[];

  constructor(heroServiceHeroService) {
    this.heroes = heroService.getHeroes();
  }
}



测试带有依赖的组件

test.component.ts

const expectedHeroes = [{name: 'A'}, {name: 'B'}]
const mockService = <HeroService> {getHeroes: () => expectedHeroes }

it('should have heroes when HeroListComponent created', () => {
  // Pass the mock to the constructor as the Angular injector would
  const component = new HeroListComponent(mockService);
  expect(component.heroes.length).toEqual(expectedHeroes.length);
});



返回列表 返回列表
评论

    分享到