2017-12-20 5 views
1

Angenommen, ich habe ein Ereignis, das einen String-Wert aus einem Dienst aussendet:Standardwert für Ereignis-Emitter

public myString: EventEmitter<string> = new EventEmitter<string>();

Und dann in meiner Komponente, ich emittieren es wie folgt:

this.myService.myString.emit(value)

Ich möchte einen Standardwert für die Zeichenfolge festlegen, die dieses Ereignis verwendet, wenn noch kein Ereignis ausgegeben wurde. Ist es möglich, so etwas wie zu tun:

public setString: string = 'Default Value, No Emission Yet' || this.myService.subscribe(emittedValue => this.setString = emittedValue); 
+0

Aber um das Ereignis zu verbrauchen, müssen Sie es richtig ausstrahlen? Sie können also den Wert zu dem Zeitpunkt zuweisen, an dem das Ereignis –

+3

ausgibt. Sie können einfach public setString = 'Standardwert, No Emission Yet' und dann die Emissionen in 'ngOnInit' oder etwas Ähnlichem abonnieren. –

Antwort

1

Da Sie einen Dienst verwenden, würde ich empfehlen, nicht verwenden EventEmitter: What is the proper use of an EventEmitter?

Da Sie einen Anfangswert wollen, würde ich eine BehaviorSubject vorschlagen, dass ein braucht Ursprünglicher Wert.

import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 

private myString = new BehaviorSubject<string>('Default Value, No Emission Yet') 
public myString$ = this.myString.asObsevable(); 

Dann einfach in Ihrer Komponente können Sie auf diese beobachtbaren hören und Aktionen entsprechend auszuführen.

constructor(private myService: MyService) { 
    myService.myString$.subscribe(value => { 
    // conditions and do stuff... 
    }) 
} 
+0

Entschuldigung für die Verspätung, aber ich habe es gerade benutzt und es hat perfekt funktioniert! Vielen Dank –