滄海一幻覺
2022-09-29 16:50:00
有沒有辦法從抽象服務調用子類方法?當我這樣做時,語句不會執行,因為不存在。我不確定為什么它不存在。也許有一種“有角度”的方式來做到這一點,而不是在初始化時觸發它?;蛘撸苍S我只需要在組件中手動調用 onInit。基本上,我正在做的是嘗試從服務器獲取初始應用程序數據。ifonInit@Injectable({providedIn:'root'})export class RootService { public constructor(httpClient: HttpClient) { if(typeof this.onInit === 'function') { this.onInit() } }}@Injectable({providedIn:'root'})export class MyService extends RootService { public onInit() { // Do stuff }}@Component()export MyComponent { public constructor(myService: MyService) {}}
2 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
服務沒有生命周期事件。但是,組件具有生命周期掛鉤,例如:
恩貢改變()
ngOnInit()
ngDoCheck()
...
因此,您可以在初始化組件時加
import { Component, OnInit } from '@angular/core';
@Component()
export MyComponent implements OnInit {
yourData;
public constructor(myService: MyService) {}
ngOnInit(){
myService.loadData()
.subscribe(s=> yourData = s);
}
}
載數據。如果是,則只需使用 :ngOnInit
OnInit 是一個生命周期掛鉤,在 Angular 初始化指令的所有數據綁定屬性后調用。

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
如果將服務添加到組件的提供程序,則該服務將位于組件范圍內,然后也可以在服務中調用 onInit。
但這樣做的缺點是,您無法再在組件之間共享相同的服務實例。
如果您的服務僅提供一個組件,則此方法有效。
添加回答
舉報
0/150
提交
取消