【问题标题】:Pass data from a component to a modal dialog in angular 4将数据从组件传递到角度 4 的模态对话框
【发布时间】:2017-07-07 12:02:47
【问题描述】:

我有一个 Angular 4 应用程序,我有 2 个组件一个时间线和一个模态对话框。当我双击时间线时,我想打开模式对话框,其中包含传递给双击函数的数据。

所以,在timeline.component.ts 中,我有:

        Timeline.prototype.onTaskDoubleClick = function(task){
            console.log("Double click on task" + task.id);
            console.log(task);
            $('#addProjectForm').click();
        }

如何将对象“任务”从这个函数传递给模态组件?

【问题讨论】:

  • 查看answer
  • 您能提供对模态对话框的调用吗? (在你的组件中)
  • 我点击了一个隐藏按钮:<button class="btn btn-primary" id="addProjectForm" (click)="open(addProjectForm)" style="display: none">test</button>
  • @Adrien 你看我的回答了吗?
  • 我使用了一个名为title@Input 属性将数据传递给模式。您应该使用它来传递数据。

标签: javascript angular components


【解决方案1】:

@Input@Output 用于流。

创建一个组件container,以及另外两个容器时间轴和模态

在容器组件中同时注入时间线和模态。

现在点击时间轴组件使用以下

clickEmitter = new EventEmitter<task: any>()

doubleClick(task: any) {
  this.clickEmitter.emit(task);
}

现在将此输出绑定到容器组件,如下所示

<timeline  (clickEmitter)="clickHandler($event)"></timeline>
<modal [task]="modalInput"></modal>

现在任务容器可以从容器中得到这个,如下所示。

在容器组件中

modalInput: any;

clickHandler(task) {
  this.modalInput = task;
}

现在,Modal 组件可以接收如下,

@Input
task

【讨论】:

  • 在此:"Timeline.prototype.onTaskDoubleClick = function(task){ console.log("双击 sur la tache" + task.id); console.log(task); var clickEmitter = new EventEmitter(); this.clickEmitter.emit(task); }" 我收到错误“无法读取未定义的属性'emit'”
  • 你需要将方法结构更改为角度版本。无需向原型添加方法,只需将此方法称为普通的角单击方法即可。
  • 但是我为时间线使用了一个外部库,我想在双击时间线时显示模态对话框。所以,我需要这样做才能赶上事件。
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 2017-10-16
  • 2018-07-08
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多