angular注入方法providers

在Angular中有很多方式可以將服務類注冊到注入器中:

@Injectable 元數據中的providedIn屬性
@NgModule 元數據中的 providers屬性
@Component 元數據中的 providers屬性
創建一個文件名叫名 hero.service.ts叫 hero 的服務
?hero.service.ts

import { Injectable } from '@angular/core';@Injectable({providedIn: 'root',
})
export class HeroService {constructor() { }// 新增加setName方法setName(name:string):string{return `姓名:${name}`;}}


1.@Injectable 元數據中的providedIn屬性

providedIn: 'root' 告訴 Angular在根注入器中注冊這個服務,這也是使用CLI生成服務時默認的方式.
這種方式注冊,不需要再@NgModule裝飾器中寫providers,而且在代碼編譯打包時,可以執行搖樹優化,會移除所有沒在應用中使用過的服務。推薦使用此種方式注冊服務

使用providedIn的話,后面直接在項目中使用了。

使用:heroes.component.ts

import { Component, OnInit } from '@angular/core';
import { HeroService } from '../hero.service'@Component({selector: 'app-heroes',templateUrl: './heroes.component.html',styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {constructor(private heroService:HeroService) { }ngOnInit() {this.heroService.setName('張三');}
}


2.@NgModule 元數據中的 providers屬性

改寫 hero.service.ts里面的@Injectable,如下

import { Injectable } from '@angular/core';@Injectable() // 刪掉了 {providedIn: 'root'}
export class HeroService {...}


?xx.module.ts , 例如app.module.ts

...@NgModule({providers: [HeroService,// { provide: HeroService, useValue: HeroService }],
})...


然后就可以在使用拉,使用方法,同1 heroes.component.ts文件

3.@Component 元數據中的 providers屬性

?hero.service.ts里面的@Injectable,刪掉 {providedIn: 'root'},同2 hero.service.ts文件

改寫heroes.component.ts

import { Component, OnInit } from '@angular/core';
import { HeroService } from '../hero.service'@Component({selector: 'app-heroes',templateUrl: './heroes.component.html',styleUrls: ['./heroes.component.css'],providers: [HeroService] // 新增 providers: [HeroService]
})
export class HeroesComponent implements OnInit {constructor(private heroService:HeroService) { }ngOnInit() {this.heroService.setName('張三');}
}


?

三種用法總結:

@Injectable 元數據中的providedIn屬性 ?

//service.ts
@Injectable({providedIn:'root'})//component.ts
constructor(private heroService:HeroService) { }


@NgModule 元數據中的 providers屬性

// service.ts
@Injectable()?//module.ts
@NgModule({providers: [HeroService ]
})


@Component 元數據中的 providers屬性

// service.ts
@Injectable()?// component.ts
@Component({...selector: 'app-heroes',providers: [ HeroService ]
})


原文鏈接:https://blog.csdn.net/sllailcp/article/details/102548144

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言,結構體,結構體大小,

1、結構體: 用于存儲不同數據類型的多個相關變量,從而形成一個具有獨立性的組合數據類型。 結構體的聲明: struct 結構體類型名{ 數據類型 成員1; 數據類型 成員2; 數據類型 成員3; ……… }&#xff1…

轉行軟件測試四個月學習,第一次面試經過分享

我是去年上半年從銷售行業轉行到測試的,從銷售公司辭職之后選擇去培訓班培訓軟件測試,經歷了四個月左右的培訓,在培訓班結課前兩周就開始投簡歷了,在結課的時候順利拿到了offer。在新的公司從事軟件測試工作已經將近半年有余&…

深信服數據中心管理系統 XXE漏洞復現

0x01 產品簡介 深信服數據中心管理系統DC為AC的外置數據中心,主要用于海量日志數據的異地擴展備份管理,多條件組合的高效查詢,統計和趨勢報表生成,設備運行狀態監控等功能。 0x02 漏洞概述 深信服數據中心管理系統DC存在XML外部實…

WPS-0DAY-20230809的分析和利用復現

WPS-0DAY-20230809的分析和初步復現 一、漏洞學習1、本地復現環境過程 2、代碼解析1.htmlexp.py 3、通過修改shellcode拿shell曲折的學習msf生成sc 二、疑點1、問題2、我的測試測試方法測試結果 一、漏洞學習 強調:以下內容僅供學習和測試,一切行為均在…

Keil開發STM32單片機項目的三種方式

STM32單片機相比51單片機,內部結構復雜很多,因此直接對底層寄存器編碼,相對復雜,這個需要我們了解芯片手冊,對于復雜項目,這些操作可能需要反復編寫,因此出現了標準庫的方式,對寄存器…

ES中倒排索引機制

在ES的倒排索引機制中有四個重要的名詞:Term、Term Dictionary、Term Index、Posting List。 Term(詞條):詞條是索引里面最小的存儲和查詢單元。一段文本經過分析器分析以后就會輸出一串詞條。一般來說英文語境中詞條是一個單詞&a…

日期時間常用功能和函數

1 time 模塊 time 模塊提供了很多與時間相關的類和函數,下面我們介紹一些常用的。 1.1 struct_time 類 time 模塊的 struct_time 類代表一個時間對象,可以通過索引和屬性名訪問值。對應關系如下所示: 索引屬性值0tm_year(年&a…

Docker容器與虛擬化技術:Docker資源控制、數據管理

目錄 一、理論 1.資源控制 2.Docker數據管理 二、實驗 1.Docker資源控制 2.Docker數據管理 三、問題 1.docker容器故障導致大量日志集滿,造成磁盤空間滿 2、當日志占滿之后如何處理 四、總結 一、理論 1.資源控制 (1) CPU 資源控制 cgroups&#xff0…

Java Vue Uniapp MES生產執行管理系統

本MES系統是一款B/S結構、通用的生產執行管理系統,功能強大! 系統基于多年離散智造行業的業務經驗組建,主要目的是為國內離散制造業的中小企業提供一個專業化、通用性、低成本的MES系統解決方案。 聯系作者獲取

Linux(進程控制)

進程控制 進程創建fork函數初識fork函數返回值寫時拷貝fork常規用法fork調用失敗的原因 進程終止進程退出碼進程常見退出方法 進程等待進程等待必要性獲取子進程status進程等待的方法 阻塞等待與非阻塞等待阻塞等待非阻塞等待 進程替換替換原理替換函數函數解釋命名理解 做一個…

re學習(32)【綠城杯2021】babyvxworks(淺談花指令)

鏈接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取碼:b9xf wp:首先找不到main函數,然后尋找特殊字符串, 交叉引用 反匯編 主函數在sub_3D9當中,但是IDA分析錯了 分析錯誤后,刪除函數 創建函數 操…

【Linux】多線程1——線程概念與線程控制

文章目錄 1. 線程概念什么是線程Linux中的線程線程的優點線程的缺點線程的獨立資源和共享資源 2. 線程控制Linux的pthread庫用戶級線程 📝 個人主頁 :超人不會飛)📑 本文收錄專欄:《Linux》💭 如果本文對您有幫助&…

無腦入門pytorch系列(三)—— nn.Linear

本系列教程適用于沒有任何pytorch的同學(簡單的python語法還是要的),從代碼的表層出發挖掘代碼的深層含義,理解具體的意思和內涵。pytorch的很多函數看著非常簡單,但是其中包含了很多內容,不了解其中的意思…

SpringBoot復習:(46)全局的bean懶加載是怎么實現的?

在application.properties中配置: spring.main.lazy-initializationtrue在運行SpringApplication的run方法時,代碼如下: 其中調用了prepareContext,prepareContext代碼如下: 當在配置文件中配置了spring.main.lazy-initializat…

JavaScript實現在線Excel的附件上傳與下載

摘要:本文由葡萄城技術團隊于CSDN原創并首發。轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 前言 在本地使用Excel時,經常會有需要在Excel中添加一些附件文件的需求&am…

Clickhouse基于文件復制寫入

背景 目前clickhouse社區對于數據的寫入主要基于文件本地表、分布式表方式為主,但缺乏大批量快速寫入場景下的數據寫入方式,本文提供了一種基于clickhouse local 客戶端工具分布式處理hdfs數據表文件,并將clickhouse以文件復制的方式完成寫入…

解決并發沖突:Java實現MySQL數據鎖定策略

在并發環境下,多個線程同時對MySQL數據庫進行讀寫操作可能會導致數據沖突和不一致的問題。為了解決這些并發沖突,我們可以采用數據鎖定策略來保證數據的一致性和完整性。下面將介紹如何使用Java實現MySQL數據鎖定策略,以及相關的注意事項和最…

開源低代碼平臺Openblocks

網友 HankMeng 想看低代碼工具,正好手上有一個; 什么是 Openblocks ? Openblocks 是一個開發人員友好的開源低代碼平臺,可在幾分鐘內構建內部應用程序。 傳統上,構建內部應用程序需要復雜的前端和后端交互,…

如何保證微信小游戲存檔不丟失?

引言 微信小游戲的興起為玩家提供了一個輕松便捷的娛樂方式,然而,存檔丟失問題一直以來都是開發者和玩家關注的焦點。為了確保玩家的游戲體驗和投入能夠得到充分的保障,開發團隊需要采取一系列方法來保障微信小游戲存檔不丟失。本文將介紹一…

學習筆記十五:基于YUM文件運行POD應用

基于YUM文件運行POD應用 通過資源清單文件創建第一個Pod更新資源清單文件查看pod是否創建成功查看pod的ip和pod調度到哪個節點上假如pod里有多個容器,進入到pod里的指定容器查看pod詳細信息查看pod具有哪些標簽:刪除pod通過kubectl run創建Pod Pod資源清…