1

是否可以在同一服務的兩個實例之間共享數據?Angular2在同一服務的兩個實例之間共享數據

DateService.ts

private _selectedDate: Date = new Date(); 

private _mode = 'YEAR'; //can be DAY,WEEK,MONTH also 

set selectedDate(newSelectedDate) { 
     this._selectedDate = newSelectedDate; 
    } 

    get selectedDate() { 
     return this._selectedDate; 
    } 

set mode(newMode) { 
     this._mode = newMode; 
    } 

    get mode() { 
     return this._mode; 
    } 

nextDate() { 
     //based on mode this will change the date 
    // if the mode is year then this gives next year 
    // if the mode is month then next month etc... and updates the date 
    } 

同一天,我需要在我的應用程序的多個頁面中使用。但是,我想要使其特定於使用此服務的組件。

<some-component [(date)]="dateService.selectedDate" [(mode)]="YEAR"></some-component> 

,當我從這個組件點擊nextDate按鈕,它應該到明年

<someother-component [(date)]="dateService.selectedDate" [(mode)]="DAY"></someother-component> 

,當我從這個組件點擊nextDate就應該到第二天

+2

您可以使用其他服務並將此服務注入到兩個服務實例以共享數據。 –

+0

@GünterZöchbauer你可以讓我知道如何注入一個服務在另一個。我試過這個構造函數(@Inject(DateService)dateService){ } 但它不工作 –

+0

@GünterZöchbauer我明白了。謝謝!! –

回答

1

我會通過模式作爲參數。

Component1

private mode = 'YEAR'; 

nextDate = this.dateService.nextDate(this.mode); 

Component2

private mode = 'DAY'; 

nextDate = this.dateService.nextDate(this.mode); 

DateService

nextDate(mode) { 
    // do stuff with the mode. mode will be different depending who calls this function. 
    // If Component1 calls, mode will be YEAR. If Component2 calls, mode will be DAY. 
} 

基本上,每當您從您的公共DateService中調用nextDate()時,請確保您將模式作爲參數傳遞,然後進行設置。

相關問題