AngularJs 2 - mehrere Instanzen des Dienstes erstellt
Ich habe den AngularJS 2-Dienst erstellt und verwende ihn in 2 verschiedenen Komponenten: App-Component & Sub-Component. Jede Ausgabeeigenschaft 'log' (eine Zeichenfolge) meines Dienstes.
StateService-Klasse:
@Injectable ()
class StateService {
public log : string;
static count : number = 0;
constructor () {
this.log = '';
StateService.count++;
this.writeToLog ('CREATED '+StateService.count+' at ' + new Date().toString()),;
}
public writeToLog (text : string) : void {
this.log += text + '\n';
}
}
Component:
@Component ({
selector : 'Sub-Component',
template : `<hr>
This is the Sub-Component !
<BR>
StateService Log :
<pre>{{ _stateService.log }}</pre>
<button (click)="WriteToLog ()">Write to log</button>
`,
providers : [StateService]
})
export class SubComponent {
constructor (private _stateService : StateService) {
}
public WriteToLog () : void {
this._stateService.writeToLog ('From Sub-Component - This is '+new Date().toString());
}
}
Live Beispiel für CodeHie
Ich nehme an, dass der Dienst einmal erstellt wird und wenn jede Komponente die WriteToLog-Methode aufruft, ist die Ausgabe in jeder Komponente dieselbe, aber nicht.
Beispiel der Ausgabe:
Die App-Komponente kann dies ausgeben:
Instance 1 - Erstellt am Do., 21. Januar 2016, 11: 43: 51 Uhr
From App-Component - Dies ist Do 21 Jan 2016 11: 43: 54
From App-Component - Dies ist Do 21 Jan 2016 11: 43: 55
und die Unterkomponente kann dies ausgeben:
Instance 2 - Erstellt am Do., 21. Januar 2016, 11: 43: 51 Uhr
From Sub-Component - Dies ist Do 21 Jan 2016 11: 43: 57
From Sub-Component - Dies ist Do 21 Jan 2016 11: 43: 58
So scheint es, dass 2 Instanzen des Dienstes erstellt werden (Instanz 1 + Instanz 2)
Ich möchte nur eine Instanz;) und wenn ich einen String im Protokoll anhänge, muss dieser in beiden Komponenten erscheinen.
Danke für deine Hilf