国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Angular 4 依賴注入學(xué)習(xí)教程之FactoryProvider的使用(四)

2024-05-06 15:16:22
字體:
供稿:網(wǎng)友

學(xué)習(xí)目錄

Angular 4 依賴注入教程之一 依賴注入簡介 Angular 4 依賴注入教程之二 組件服務(wù)注入 Angular 4 依賴注入教程之三 ClassProvider的使用 Angular 4 依賴注入教程之四 FactoryProvider的使用 Angular 4 依賴注入教程之五 FactoryProvider配置依賴對(duì)象 Angular 4 依賴注入教程之六 Injectable 裝飾器 Angular 4 依賴注入教程之七 ValueProvider的使用 Angular 4 依賴注入教程之八 InjectToken的使用

前言

本文屬于Angular 4 依賴注入學(xué)習(xí)系列的第四篇,主要介紹了Angular 4 依賴注入之FactoryProvider的使用,感興趣的朋友們下面來看看詳細(xì)的介紹:

本系列教程的開發(fā)環(huán)境及開發(fā)語言:

Angular 4 + Angular CLI TypeScript

基礎(chǔ)知識(shí)

FactoryProvider 的作用

FactoryProvider 用于告訴 Injector (注入器),通過調(diào)用 useFactory 對(duì)應(yīng)的函數(shù),返回 Token 對(duì)應(yīng)的依賴對(duì)象。

FactoryProvider 的使用

function serviceFactory() {  return new Service();}const provider: FactoryProvider = { provide: 'someToken', useFactory: serviceFactory, deps: []};

FactoryProvider 接口

export interface FactoryProvider { // 用于設(shè)置與依賴對(duì)象關(guān)聯(lián)的Token值,Token值可能是Type、InjectionToken、 // OpaqueToken的實(shí)例或字符串 provide: any; // 設(shè)置用于創(chuàng)建對(duì)象的工廠函數(shù) useFactory: Function; // 依賴對(duì)象列表 deps?: any[]; // 用于標(biāo)識(shí)是否multiple providers,若是multiple類型,則返回與Token關(guān)聯(lián)的依賴 // 對(duì)象列表 multi?: boolean;}

FactoryProvider

介紹完基礎(chǔ)知識(shí),接下來我們馬上進(jìn)入正題。不知道大家是否還記得,之前我們創(chuàng)建過的 HeroComponent 組件:

import { Component, OnInit } from '@angular/core';import { HeroService } from '../hero.service';@Component({ selector: 'app-hero', template: ` <ul> <li *ngFor="let hero of heros"> ID: {{hero.id}} - Name: {{hero.name}} </li> </ul> `})export class HeroComponent implements OnInit { constructor(private heroService: HeroService) { } heros: Array<{ id: number; name: string }>; ngOnInit() { this.heros = this.heroService.getHeros(); }}

那么現(xiàn)在問題來了,假設(shè)我們想在獲取英雄數(shù)據(jù)時(shí),輸出調(diào)試信息,那應(yīng)該怎么辦?What ~,這個(gè)問題不是很簡單么,直接使用 console.log API 輸出相應(yīng)信息不就行了么:

console.log('Fetching heros...');this.heros = this.heroService.getHeros();

那問題又來了,如果多個(gè)組件都使用 HeroService 去獲取英雄數(shù)據(jù),那么是不是每個(gè)組件都得添加對(duì)應(yīng)的語句。另外如果要修改輸出的調(diào)試信息,那就得修改程序中多個(gè)地方。其實(shí)我們一般只需要在開發(fā)階段,輸出調(diào)試信息,因此上面的方案不合理,也不夠靈活。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 石渠县| 建宁县| 赣榆县| 依安县| 濉溪县| 巫溪县| 黎平县| 章丘市| 调兵山市| 阿勒泰市| 盐池县| 襄城县| 西城区| 东兴市| 建昌县| 阿坝县| 武安市| 苍溪县| 长阳| 天峻县| 宜黄县| 葫芦岛市| 江达县| 夏邑县| 读书| 盱眙县| 盖州市| 郁南县| 郴州市| 图们市| 宜川县| 万州区| 曲周县| 漳平市| 会理县| 宜州市| 孟州市| 象州县| 岱山县| 阿鲁科尔沁旗| 普定县|