深入淺析Angular中的依賴注入
什麼是依賴注入?本篇文章帶大家來了解Angular中的依賴注入,希望對大家有幫助!
依賴注入概念:
#維基百科對依賴注入的解釋:在軟體工程中,依賴注入是實現控制反轉的一種軟體設計模式,一個依賴是一個被其他物件(client)呼叫的物件(服務),注入則是將被依賴的物件(service)實例傳遞給依賴物件(client)的行為。
將 被依賴的物件傳遞給依賴者,而不需要依賴者自己去建立或尋找所需物件是DI的基本原則。
依賴注入允許程式設計遵從依賴倒置原則(簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模組間的耦合) 調用者(client)只需知道服務的接口,具體服務的查找和創建由注入者(injector)負責處理並提供給client,這樣就分離了服務和調用者的依賴,符合低耦合的程序設計原則。也是依賴注入的主要目的。 【相關教學推薦:《angular教學》】
控制反轉
控制反轉與依賴注入是相輔相成的。範例:classA依賴classB但是classA不主動建立classB的實例,透過參數的形式傳遞進來。
class A { construct(private b: B) {} } class B {} const a: A = new A(new B());
Angular依賴注入是實例化元件的時候,將服務的實例傳遞進來,形成了控制反轉。
依賴注入
Angular依賴注入使用的都是一個實例,也是Angular透過服務通訊的一種方式。如果不適用依賴注入,多個實例,組件間通訊也就無法使用服務了。 app.module.ts:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule, InjectionToken } from '@angular/core'; import { AppComponent } from './components/app/app.component'; import { SingleServiceService } from './service/single-service.service'; import { MyServiceService } from './service/my-service.service'; import { UseServiceService } from './service/use-service.service'; import { ValueServiceService } from './service/value-service.service'; import { ReactiveFormsModule, FormsModule } from '@angular/forms'; import { HttpClientModule } from '@angular/common/http'; export interface AppConfig { title: string } export const CONFIG = new InjectionToken<AppConfig>('描述令牌的用途'); const USE_Config = { title: "非类的注入令牌" } @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, HttpClientModule, FormsModule, ReactiveFormsModule ], providers: [ SingleServiceService, // 完整形式 // {provide: SingleServiceService, useClass: SingleServiceService} // provide 属性存有令牌,它作为一个 key,在定位依赖值和配置注入器时使用。 // 属性二通知如何创建依赖,实际依赖的值可以是useClass、 useExisting、useValue 或 useFactory // useExisting起别名,依赖注入也可以注入组件 {provide: MyServiceService, useClass: UseServiceService}, // useValue可以是字符串,对象等 {provide: ValueServiceService, useValue: "依赖注入字符"}, // 使用 InjectionToken 对象来为非类的依赖选择一个提供者令牌 { provide: CONFIG, useValue: USE_Config } ], bootstrap: [AppComponent], entryComponents: [] }) export class AppModule { }
SingleServiceService:
import { Injectable } from '@angular/core'; @Injectable() export class SingleServiceService { constructor() { } }
MyServiceService:
import { Injectable } from '@angular/core'; @Injectable() export class MyServiceService { constructor() { } getName(): string { return "my-service"; } }
UseServiceService:
import { Injectable } from '@angular/core'; @Injectable() export class UseServiceService { constructor() { } getName(): string { return "use-service"; } }
ValueServiceService:
import { Injectable } from '@angular/core'; @Injectable() export class ValueServiceService { constructor() { } }
更多程式相關知識,請造訪:程式設計影片! !
以上是深入淺析Angular中的依賴注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Angular.js是一種可自由存取的JavaScript平台,用於建立動態應用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應用程式的各個方面。 Angular.js提供了一系列工具,可協助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環境,可讓您在伺服器端執行JavaScript程式碼。要在Ub

隨著網路的快速發展,前端開發技術也不斷改進與迭代。 PHP和Angular是兩種廣泛應用於前端開發的技術。 PHP是一種伺服器端腳本語言,可以處理表單、產生動態頁面和管理存取權限等任務。而Angular是一種JavaScript的框架,可以用來開發單一頁面應用程式和建構元件化的網頁應用程式。本篇文章將介紹如何使用PHP和Angular進行前端開發,以及如何將它們

angular中怎麼使用monaco-editor?以下這篇文章記錄下最近的一次業務中用到的 monaco-editor 在 angular 中的使用,希望對大家有幫助!

這篇文章帶大家了解Angular中的獨立元件,看看怎麼在Angular中建立一個獨立元件,怎麼在獨立元件中導入已有的模組,希望對大家有幫助!

Angular框架中元件的預設顯示行為不是區塊級元素。這種設計選擇促進了元件樣式的封裝,並鼓勵開發人員有意識地定義每個元件的顯示方式。透過明確設定CSS屬性 display,Angular組件的顯示可以完全控制,從而實現所需的佈局和響應能力。

Angular專案過大,怎麼合理拆分它?以下這篇文章跟大家介紹一下合理分割Angular專案的方法,希望對大家有幫助!

Angular Route中怎麼提前取得數據?以下這篇文章為大家介紹一下從 Angular Route 提前取得數據的方法,希望對大家有幫助!
