Javascript 如何订阅输入属性以调用函数2+
您好,我有一个问题,如主题: 我的父组件将值传递给其子组件,如下所示:Javascript 如何订阅输入属性以调用函数2+,javascript,angular,rxjs,Javascript,Angular,Rxjs,您好,我有一个问题,如主题: 我的父组件将值传递给其子组件,如下所示: <em-event-list [sumListEvents]="sumListEvents"></em-event-list> 所以当值sumListEvents将更改时,我希望订阅该值以从服务调用函数。以下是my children组件的外观: @Input() sumListEvents: Observable<number>; private events: Event[] =
<em-event-list [sumListEvents]="sumListEvents"></em-event-list>
所以当值sumListEvents将更改时,我希望订阅该值以从服务调用函数。以下是my children组件的外观:
@Input() sumListEvents: Observable<number>;
private events: Event[] = [];
constructor(private dataService: EventListService) {
let loadSubscription = this.sumListEvents.subscribe(
value => {
this.events = this.dataService.showEvents(value)
}
)
}
但我收到SUMBIRE错误,无法读取sumListEvents中未定义的属性“subscribe”。有什么想法吗?sumListEvents在您需要时不可用。只有当sumListEvents可用时,才能使用*ngIf进行订阅
<em-event-list *ngIf [sumListEvents]="sumListEvents"></em-event-list>
这会起作用,但将活动传递给孩子并在孩子中订阅可能不是最佳做法
有关将异步数据传递给子组件的其他方法,请参阅。更好的方法是使用异步管道和setter
将代码移动到Ngonit hookstill错误this.sumListEvents.subscribe不是函数
<em-event-list *ngIf [sumList]="sumListEvents$ | async"></em-event-list>
@Input() set sumList(value) {
if(value) {
this.events = this.dataService.showEvents(value);
}
}
private events: Event[] = [];
constructor(private dataService: EventListService) { }