0
ソースの値をコンポーネント変数(event: Event
)にバインドするために、観測可能なソースを購読しようとしています。RxJSのsubscribe()内のコンポーネント変数に値を割り当てます。
subscribe()
関数に渡されたオブザーバ関数が正しく実行され、オブザーバブルが期待通りに到着したにもかかわらず、コンポーネント変数event: Event
は常に未定義です。
なぜこのようなことが起こり、この問題を解決するにはどうすればよいですか?
@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'
}
を修正する必要が未定義であることがわかります'); '' this.event = event'で正しく、 ''何か ''をコンソールに期待どおりに表示しますか?また、 'console.log(this.event); < - これは 'undefined'ですが、加入者関数が設定されたばかりで、おそらくまだ実行されていないので、その時点では 'undefined 'と自然に思えます(' ngIf'が最終的には関数が実行されるときに真)。 – acdcjunior
@acdcjuniorに追加しました。テンプレートに
を追加して、実際の値がfalseからtrueに変わるかどうか確認してください。 – Tamas