Angular 4组件引用到另一个组件中

时间:2018-01-18 21:04:36

标签: angular angular-components

我对Angular 4有一个疑问。

我的一位同事创建了AComponent的引用,并将其绑定为BComponent的属性以访问AComponent的属性,而不是绑定AComponent单独{1}}个属性。然后他还订阅了AComponent中的一个观察者。

这是一个想法:

// a.component.ts
@Component({
  selector: 'some-a',
  template: `<some-b [someRefToAComponent]="someRefToThis">...</some-b>`
})
export class AComponent {
  someRefToThis = this;
  someObservable: Observable<any>;
}

// b.component.ts
@Component({
  selector: 'some-b',
  template: `...`
})
export class BComponent {
  @Input() someRefToAComponent: AComponent;
  someSubscription: Subscription<any>;

  ngOnInit() {
    this.someRefToAComponent.someObservable.subscribe(...);
  }

  ngOnDestroy() {
    this.someSubscription.unsubscribe();
  }
}

这是我的问题:这是一种不好的做法还是一种非常糟糕的做法?另外:在这种情况下会发生什么?它会导致内存泄漏吗?

知道发生了什么会很有趣,因为我还没有深入了解Angular的内部功能。

1 个答案:

答案 0 :(得分:0)

最终,我会考虑这个&#34;反对谷物&#34;当谈到以Angular方式做事时。听起来你真正需要的是服务。需要交互并可从多个端点访问的数据(无论是组件还是模块)都应包含在服务中。

另一种选择是使用Data Binding在组件之间传递数据。

这是理解Angular中的依赖注入系统真正成为一种要求的地方。服务是应用程序单例,允许组件与类似的数据交互。

我真的建议您查看有关Dependency Injection的文档。