[英]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.