首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度组件通信

角度组件通信
EN

Stack Overflow用户
提问于 2017-08-29 00:02:52
回答 1查看 413关注 0票数 1

我在让两个组件在Angular中通信时遇到了问题,并且我看不出我在哪里犯了错。

更具体地说,我有一个表(一个组件),我想单击一行以打开一个模式窗口(单独的组件),其中包含所单击的行的详细信息。我已经完成了所有的连接,模式窗口打开了,但没有显示任何数据。

代码语言:javascript
复制
export class TableComponent implements OnInit {
  posts: Post[];
  selected: any;

  selectRow(post) {
    this.selected = post;
    document.getElementById('modalActivator').click();
  }

  private setPosts(posts) {
    this.posts = posts;
  }

  constructor(
    private restCallService: RestCallService
  ) {}

  ngOnInit() {
    this.restCallService.getPosts().then(posts => this.setPosts(posts))
  }

}

表格HTML:

代码语言:javascript
复制
     <table>
        <tbody>
            <tr *ngFor="let post of posts;"
                (click)="selectRow(post)">

                <td>{{post.userId}}</td>
                <td>{{post.id}}</td>
                <td>{{post.title}}</td>

            </tr>
        </tbody>
    </table>

    <app-table-row-expanded> [postFromParent]="selected"</app-table-row-expanded>

模式没有以最佳方式打开,但这会是没有数据通信的问题吗?

代码语言:javascript
复制
export class TableRowExpandedComponent implements OnInit {

  @Input() postFromParent: Post

  constructor() {}

  ngOnInit() {}

}

我将为您省去整个模态HTML。这是位于模态主体中的内容:

代码语言:javascript
复制
 <p>{{postFromParent?.body}}</p>

任何帮助都将不胜感激。

另外,我正在使用Angular CLI和Eclipse,并且已经出现了一些奇怪的错误(运行代码无法编译,除非我关闭并重新打开文件ie。但这不是这里的问题所在)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-29 00:33:53

有很多方法可以让它按照你想要的方式运行。我最喜欢的模式是在模式组件中公开一个公开的开放方法。这将使您可以根据您喜欢的任何条件直接使用数据调用它。例如,设置可以是

代码语言:javascript
复制
export class TableComponent {
  @ViewChild('modal') modal;

  selectRow(post) {
    this.modal.open(post);
  }

}

<app-table-row-expanded #modal> [postFromParent]="selected"</app-table-row-expanded>

modal提供了对组件的引用,该组件由@ViewChild装饰器访问。现在,您只需要在模态组件中创建您的open方法

代码语言:javascript
复制
export class TableRowExpandedComponent implements OnInit {

  public open(post) {
     // whatever logic to display your stuff here
  }
}

您还可以正常访问发布到组件的任何@Input

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45923088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档