当订阅管道检测到更改时执行代码

时间:2019-06-23 20:34:34

标签: angular typescript

我有一个组件,可以根据所选元素动态更改其内容。该组件从包含一系列案例的模拟中获取其内容。

此外,我还有一个链接,可以单击它来显示下一个条目。

要检测此更改,我将其添加到了init上:

case: Case;
cases = CASES;

...

ngOnInit() {
    this.route.paramMap.pipe(
      map(paramMap => +paramMap.get('id')),
    switchMap((id: number) => this.caseService.getCase(id)),
    ).subscribe(cases => this.case = cases);
    this.loadData();
  }

如您所见,位于ngOnInit中的还有一个名为loadData()的函数:

loadData(): void {
    this.color = this.case.header;
    this.images.push(this.case.image, this.case.image2, this.case.image3);
    this.carouselImage = this.images[this.counter];
    this.nextImage = this.images[this.nextCounter];
    this.prevImage = this.images[this.prevCounter];

    if (this.case.id === this.cases.length) {
      this.nextIndex = 0;
    } else {
      this.nextIndex = this.case.id + 1;
    }
  }

现在,如果用户单击提到的链接,则所选案例将被更改并显示,但是loadData()将不会执行,因为不会重新加载页面。

我还尝试在loadData()中调用(click),但似乎loadData()仍适用于旧情况。

当订阅管道检测到更改时,是否可以调用执行loadData()

0 个答案:

没有答案