我有LoginService,它必須是單子,但angular創建了兩個實體,并隨機使用它們,這是我的代碼:
app.module.ts :
providers: [
{ provide: AbstractLoginService, useClass: LoginService },
{ provide: HTTP_INTERCEPTORS, useClass: HTTPDemoInterceptor, multi: true }。
...
]
HTTPDemo.interceptor.ts :
@Injectable({ providedIn。'root' })
export class HTTPDemoInterceptor 實作HttpInterceptor {
constructor()
Private AbstractLoginService: LoginService。
) {
console.log('CONSTRUCTOR HTTPDemoInterceptor')。
}
login.service.ts
@Injectable({ providedIn: 'root' })
export class LoginService 實作 AbstractLoginService {
private timestamp = 0
constructor(private timestamp = 0;) {
this.timestamp = new Date() 。
console. trace('CONSTRUCTOR LoginService', this.timestamp) 。
}
abstract-login.service.ts
@Injectable({ providedIn: 'root' })
export抽象的class AbstractLoginService {
// (no constructor) ...
當我運行代碼時,我在控制臺中看到
CONSTRUCTOR LoginService 1632224055035
CONSTRUCTOR LoginService 1632224055036
CONSTRUCTOR HTTPDemoInterceptor
下面是帶有堆疊跟蹤的截圖(左邊是第一個建構式的呼叫,右邊是第二個)--我們清楚地看到HTTPDemoInterceptor建構式只被呼叫了一次,但LoginService被呼叫了兩次。如何解決這個問題?
uj5u.com熱心網友回復:
你正在提供你的服務兩次,一次是通過可注入裝飾器中的 providedIn 屬性,另一次是當你把它添加到模塊中的提供者陣列時,這就是為什么有兩個不同的服務實體,只要使用一種方法來提供你的服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332370.html
標籤:
上一篇:Angular:ERRORRangeError:當我輸入輸入時,超過了最大呼叫堆疊大小的資訊
下一篇:這個非數字的蛞蝓重碼有什么問題?

