簡體   English   中英

從服務訪問組件數據

[英]Acces component data from service

我的組件中有一個表單,我正在使用響應式表單,我想通過我的服務訪問此表單。

所以讓我們說:

const id = MyComponent.id

在我的組件中:

@Output: public id: number = 7;

我認為服務是一個聲明和實例化外部調用(如 API 調用)的空間。 我也將服務用作“包羅萬象”。 實際上,在 Angular 中,當您在組件的構造函數中定義服務時,它會在整個會話期間保持打開狀態。

所以你有幾種方法來傳遞數據。 您可以以靜態方式執行此操作,也可以以允許監視事件的動態方式執行此操作。

例如:

服務中

export class MyService {
myString: string = '';

constructor(){ }

getMyString(): String{ return this.myString; }

    setMyString(newVal: string){
        this.myString = newVal;
    }
}

在組件中

export class MyComponent implements onInit {  
myString = undefined;  
constructor(myService: MyService ){} 
    ngOnInit(){ 
        this.myString = this.myService.getMyString();
    } 
}

否則,還有另一種方法,它允許您檢查值何時發生變化。 為此,我使用 BehaviorSubject。 資源更昂貴,但允許訂閱,但您必須考慮在 ngOnDestroy 中取消訂閱它們。

所以要在服務中做到這一點:

服務中

export class MyService {
myString: behaviorSubject= new behaviorSubject('');

constructor(){ }

getMyString(): Observable{ return this.myString.asObservable(); }

    setMyString(newVal: string){
        this.myString.next(newVal);
    }
}

在組件中

export class MyComponent implements onInit {
myString;
 constructor(myService: MyService ){}
    ngOnInit(){
        this.myService.getMyString().subscribe((data)=>myString=data);
    }
}

我希望這些解釋對你有幫助。 我給了你一個 String 的例子,當然這只是一個例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM