【问题标题】:How to execute angular subject/eventEmitter by start of the website?如何在网站启动时执行 angular subject/eventEmitter?
【发布时间】:2022-11-06 23:57:53
【问题描述】:

数据服务.ts

testData$ = new Subject<any>();


initData() {
      this.getDataFromApi().subscribe((response) => {
        this.testData$.next(response)
      });
}


getInitData() {
      return this.testData$;
    }

父组件.ts

ngOnInit(): void {
  this.dataService.initData();
}

child.component.ts

ngOnInit(): void {
  this.dataService.getInitData().subscribe((response) =>
    {
      console.log(response);
    })
}

在这种情况下,当我第一次访问 child.component.ts 网站时,console.log 不会执行。它在我转到另一个组件(我网站上的另一个选项卡)然后返回到我有父组件和子组件的选项卡后执行。当我第一次访问网站时,如何执行 console.log?

我试过我写的。

【问题讨论】:

    标签: angular eventemitter subject


    【解决方案1】:

    我建议这样做:

    private testData$
    
    initData() {
      this.testData$ = this.getDataFromApi().pipe(
        shareReplay(1)
      );
    }
    
    getInitData() {
      return this.testData$;
    }
    

    这使您不必担心时间,避免多层订阅的反模式,并且不会将Subject.next() 暴露在您的服务之外。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      相关资源
      最近更新 更多