溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular中依賴注入的概念分析

發布時間:2021-09-08 11:37:17 來源:億速云 閱讀:145 作者:小新 欄目:web開發

這篇文章主要為大家展示了“Angular中依賴注入的概念分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Angular中依賴注入的概念分析”這篇文章吧。

依賴注入概念:

維基百科對依賴注入的解釋:在軟件工程中,依賴注入是實現控制反轉的一種軟件設計模式,一個依賴是一個被其他對象(client)調用的對象(服務),注入則是將被依賴的對象(service)實例傳遞給依賴對象(client)的行為。

將 被依賴的對象傳給依賴者,而不需要依賴者自己去創建或查找所需對象是DI的基本原則。

依賴注入允許程序設計遵從依賴倒置原則(簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合) 調用者(client)只需知道服務的接口,具體服務的查找和創建由注入者(injector)負責處理并提供給client,這樣就分離了服務和調用者的依賴,符合低耦合的程序設計原則。也是依賴注入的主要目的?!鞠嚓P教程推薦:《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中依賴注入的概念分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女