【问题标题】:Communicating from one component to another Angular 5从一个组件到另一个 Angular 5 通信
【发布时间】:2018-07-12 14:29:37
【问题描述】:

我有两个组件,一个导航组件和一个详细信息组件。在我的导航组件中,我有一些用户可以选择的选项或项目。当用户选择一个时,我正在尝试详细更新砌体网格。我能够更新砌体网格,但我需要调用方法 prepended()。例如:

代码详细组件:

  import Masonry from 'masonry-layout';

  // on ngOnInit
  let grid = document.querySelector('.grid');

  let msnry = new Masonry( grid, {
    itemSelector: '.grid-item',
  });

我需要从导航组件中调用以下内容:

msnry.prepended();

如何从另一个组件调用 msnry.prepended()?任何帮助将不胜感激。

【问题讨论】:

  • 这两个组件之间是否存在父子关系?
  • 两个组件都存在于细节中
  • 尝试 Angular 文档中提到的事件发射器:angular.io/guide/…
  • 我会试一试,谢谢。

标签: javascript angular typescript masonry


【解决方案1】:

如果它们有父子关系,那么您可以使用模板引用变量技术从父组件调用子组件的方法。比如假设下面这个div就是你的导航组件模板,

<div>
    <detail-component #detailComponent></detail-component>
    <button (click)="detailComponent.sayHello()"/>
</div>

考虑到您的详细组件有一个名为sayHello() 的方法。导航组件上的按钮将在单击时调用该方法。

希望对你有帮助。

【讨论】:

  • 如果他们没有父子关系(如你所愿),你必须使用服务:angular.io/guide/…
  • 谢谢,我会试试这个
猜你喜欢
  • 2018-07-21
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多