Ich habe ein Problem, bei dem eine meiner beobachtbaren Variablen von einer anderen beobachtbaren abhängt, aber wenn die übergeordnete Observable aktualisiert wird, scheint das Kind nicht aktualisiert zu werden.Observables mit anderen beobachtbaren
ClientService (Eltern)
@Injectable()
export class ClientService {
private client = new BehaviorSubject("");
clientStream$ = this.client.asObservable();
}
}
CommentService (Kind)
@Injectable()
export class CommentsProvider {
private client$: Observable<any>;
private comments = new BehaviorSubject([]);
comments$: Observable<any[]>
constructor(private clientService: ClientService) {
this.initializeComments()
}
initializeComments() {
this.client$ = this.clientService.clientStream$
this.comments$ = this.comments.asObservable()
this.client$.subscribe(client => {
for (let comment of client.comments) {
this.addComment(comment)
}
})
}
addComment(comment) {
let commentArray = _.cloneDeep(this.comments.getValue());
commentArray.push(comment)
this.comments.next(commentArray)
}
getComments() : Observable<any[]> {
return this.comments$
}
}
Und meiner Meinung nach Komponente Ich nenne:
`this.comments$ = this.commentService.getComments();`
und die Ergebnisse anzeigen mit :
*ngIf="this.comments$ | async as comments ..."
Wenn ich einen Anruf zu addComment()
machen, wird das Feld aktualisiert, jedoch, wenn ich einen Kommentar zu client.comments
hinzufügen, ist das Array nicht aktualisiert. Wäre es möglich, Abonnenten über den Wechsel auf zu informieren?
Wie werden Ihre Dienste zur Verfügung gestellt? Sind beide Singleton-Dienste (App-weit)? – LLai
ja, das sind sie. Sollten sie etwas anderes sein? –
na, Singletons sollte gut sein. Können Sie Ihren Code zu ClientService hinzufügen, wenn 'wenn ich einen Kommentar zu client.comments hinzufüge, das Array nicht aktualisiert wird' – LLai