Nicht standardmäßig. Ein Service ist eine Instanz einer Klasse, mehr nicht.
@Injectable()
class MyService {
}
@Component({
selector: 'my-component',
...
)}
class MyComponent {
constructor(private myService:MyService) {}
}
@NgModule({
providers: [MyService],
...
})
export class AppModule {}
diese Weise ein Dienst (MyService
) Instanz MyComponent
geben wird, aber das ist alles. Die Serviceinstanz hat kein Wissen über MyComponent
.
Was Sie wahrscheinlich möchten, ist ein Observable
zu Ihrem Dienst hinzufügen und abonnieren Sie es in Ihrer Komponente.
@Component({
selector: 'my-component',
...
)}
class MyComponent {
constructor(myService:MyService) {
myService.someObservable.subscribe(value => doSomething(value));
}
doSomething(value) {
console.debug(value);
}
}
diese Art und Weise der Dienst ein Verfahren auf der Komponente „ruft“, wenn der Observable
someObservable
einen anderen Wert emittiert.
Weitere Details finden detect change of nested property for component input
Wenn Sie einen Verweis in Ihren Dienst auf die Komponente, sicher haben. Aber ich würde nicht empfehlen, die beiden Klassen aufeinander zu beziehen. –
Also ist im Grunde die Event-Throwing und Subscribe-Methode Best Practice? –
Definiert. Das können Sie mit Beobachtern tun. Sie möchten es getrennt halten, um Trennungen von Bedenken zu behalten. Die Antwort von Günter scheint richtig zu sein. –