Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何订阅输入属性以调用函数2+_Javascript_Angular_Rxjs - Fatal编程技术网

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) { }