日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

angular的几种依赖注入方式

發布時間:2024/3/24 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 angular的几种依赖注入方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、useClass

提供器的一種寫法是這樣的

providers: [...Service...],

其完全寫法為

providers: [{provide:Service,useClass:Service}],

provide提供token而實際使用的服務為useClass聲明的服務,下面這種

providers: [{provide:Service,useClass:anotherService}],

如果anotherService需要實現其他的類則要把類中的方法實現如:anotherService實現Service

Service類

import { Injectable } from '@angular/core';@Injectable() export class ServiceService {constructor() { }methods(){console.log('第一種服務類')} }

anotherService類

import { Injectable } from '@angular/core'; import {ServiceService} from './service.service';@Injectable() export class AnotherServiceService implements ServiceService{constructor() { }methods(){console.log('另一服務服務類')}anotherMethods(){console.log('另一服務服務類')}}

同時服務之間也可以互相使用,前提是必須加上@Injectable()裝飾器,
使用法跟組件中一樣在構造函數中注入服務。

2、值

它的提供器的token為字符串,使用的是useValue,可以是一個對象,也可以是一個值

providers: [{provide:‘IS_Value’,useValue:false}],

注意在組件中獲取的方式略有不同,data即為獲取到的值

constructor(@Inject('IS_Value') private data) { }

3、工廠方法定義提供器

工廠方法只會被調用一次寫法如下

provides:[{provide:ServiceService,useFactory:()=>{let dev=Math.random()>0.5if(dev){return new ServiceService()}else {return new AnotherServiceService()}}}]

如果工廠函數想要使用提供器的其他服務加入屬性deps,并以參數的形式傳入

provides:[loggerService,{provide:ServiceService,useFactory:(logger:loggerService)=>{let dev=Math.random()>0.5if(dev){return new ServiceService(logger)}else {return new AnotherServiceService(logger)}}deps:[loggerService]}]

這樣就相當于實例化了loggerService,不過條件不簡單的是通過一個隨機數,我們也可以傳進去一個值

provides:[loggerService,{provide:‘IS_Value’,useValue:false}{provide:ServiceService,useFactory:(logger:loggerService,val)=>{let dev=Math.random()>0.5if(dev){return new ServiceService(logger)}else {return new AnotherServiceService(logger)}}deps:[loggerService,'IS_Value']}]

然后工廠函數會根據deps第二個值搜索并把它傳給第二個參數

總結

以上是生活随笔為你收集整理的angular的几种依赖注入方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。