einen Wert zu. Ich versuche, eine beobachtbare Quelle zu abonnieren, um den Wert der Quelle an eine Komponentenvariable (event: Event
) zu binden.Weisen Sie einer Komponentenvariablen innerhalb von subscribe()
Obwohl die Beobachterfunktion, die an die subscribe()
-Funktion übergeben wurde, korrekt ausgeführt wird und das Observable bei expected ankommt, ist die Komponentenvariable event: Event
immer undefiniert.
Warum passiert das und wie kann ich dieses Problem lösen?
@Component({
selector: 'event-detail',
template: `
<div *ngIf="event"> <-- this will never evaluate to 'true'
...
</div>
`,
})
export class EventCenterDetailComponent implements OnInit {
event: Event;
subscription: Subscription;
constructor(
private eventBus: EventBus
) {}
ngOnInit() {
this.subscription = this.eventBus.event$.subscribe((event: Event) => {
this.event = event; <-- this assignment seems to have no effect on the component variable
});
console.log(this.event); <-- this is 'undefined'
}
Sie beheben sagen, dass, wenn Sie einen 'console.log platzieren (" etwas '); '' this.event = event', wird' 'something'' an die Konsole wie erwartet gedruckt? Auch, 'console.log (this.event); <- das ist 'undefiniert' 'scheint zu diesem Zeitpunkt natürlich 'undefiniert' zu sein, da die Subscriber Function gerade eingerichtet wurde, also höchstwahrscheinlich noch nicht ausgeführt wurde (dies wird nicht die Tatsache beeinflussen, dass 'ngIf' werden sollte) wahr, wenn die Funktion ausgeführt wird). – acdcjunior
zu dem gerade erwähnten @acdcjunior hinzufügen - versuchen Sie
zu Ihrer Vorlage hinzuzufügen und sehen Sie, ob sich der tatsächliche Wert von false in true ändert. – Tamas