页面加载时如何从不同组件中的数组获取数据

时间:2020-10-03 12:42:06

标签: angular typescript

我在组件B中有一些数组,带有一些像这样的链接:

videoUrlArray = [
    'link1', 'link2',...
  ];

通常,我使用ViewChild从组件到组件获取数据,它可以正常工作,但是如果单击该按钮,则需要数据。现在,我总是需要组件B中的数据。

我想到了将数据从B组件传递给A构造函数上的A(例如在Java中-我是本机学习Java,使用TS的Angular)。

所以我在B中的构造函数如下:

  constructor() {
    this.videoUrlArray.push('someExampleLink3');
  }

并希望通过以下方式获取A组件中的数据:

  @Inject(new BComponent()) BObject;

我期望这样的方法:

  addCategoryBonStart(): void {
      this.videoUrl.push(this.BObject);
      this.sanitizedVideos = this.videoUrl.map(video => this.sanitizer.bypassSecurityTrustResourceUrl(video));
    console.log('BObject' + this.BObject);
  }
在ngOnInit中实现的

将完成其工作。取而代之的是,我得到了这样的错误,其中包含一些未定义且看起来很糟糕的iframe:

ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'undefined'
Error: Cannot match any routes. URL Segment: 'undefined'

为什么未定义?我正在用B对象的构造函数创建数组元素吗? 加载页面时如何获取对象?

在A组件的html模板中(我试图从B的数组中接收数据)中添加了B模板,所以它应该可以工作。

1 个答案:

答案 0 :(得分:0)

据我所知,我建议使用两个组件都可以导入的共享服务。

我还建议使用BehaviourSubjects。这些可以通过共享服务的公共方法设置,并由另一个组件订阅。

您的组件A可以通过setter方法推送元素,而您的组件B可以订阅BehaviourSubject。

我建议您阅读本主题,因为它的imo在角度方面是一个非常强大的概念。