Sto utilizzando un servizio per gestire lo stato in Angolare:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class DrawingAreaService {
itemChange: Subject<string> = new Subject();
private foo = 'foo';
get bar() {
return this.foo;
}
set bar(value) {
this.foo = value;
this.itemChange.next(value);
}
}
E nel mio componente ho
get bar() {
return this.service.bar;
}
ngOnInit() {
this.service.bar = 'test value';
}
html:
{{ this.bar }}
Chiamando il servizio e aggiornando il valore bar
su init non si attivano le modifiche del componente. Se invece ho impostato anche un campo sul componente, qualcosa come:
this.service.bar = 'test value';
this.bar = 'test value';
attiva il rilevamento delle modifiche.
Mi chiedo quale sia il modo migliore per gestire le modifiche di stato come questa, dovrei impostare solo il servizio e quindi chiamare detectChanges()
? Devo iscrivermi e impostare un campo di classe dall'abbonamento? Dovrei impostare due volte?
C'è un altro modo per farlo? Come posso farlo in un modo molto semplice?