我在组件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模板,所以它应该可以工作。
答案 0 :(得分:0)
据我所知,我建议使用两个组件都可以导入的共享服务。
我还建议使用BehaviourSubjects。这些可以通过共享服务的公共方法设置,并由另一个组件订阅。
您的组件A可以通过setter方法推送元素,而您的组件B可以订阅BehaviourSubject。
我建议您阅读本主题,因为它的imo在角度方面是一个非常强大的概念。