Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angular4应用程序的模态对话框上显示数据_Javascript_Angular - Fatal编程技术网

Javascript 在angular4应用程序的模态对话框上显示数据

Javascript 在angular4应用程序的模态对话框上显示数据,javascript,angular,Javascript,Angular,我有一个angular 4应用程序,我想在对话框中显示数据。因此,我使用@Output将数据从子组件传递到父组件 因此,在父组件中,我有: export class DashboardComponent { myTask; public returnTask(task: any):void { console.log("returnTask"); this.myTask = task; console.log(this.myTa

我有一个angular 4应用程序,我想在对话框中显示数据。因此,我使用
@Output
将数据从子组件传递到父组件

因此,在父组件中,我有:

export class DashboardComponent {
    myTask;


    public returnTask(task: any):void {
        console.log("returnTask");
        this.myTask = task;
        console.log(this.myTask);
    }
    openDialogEditTask() {
        console.log(this.myTask);
        let dialogRef = this.dialogEditTask.open(DialogEditTask, {
            //task
            data:  {
                start: this.myTask.start,
                end: this.myTask.end,
                status: this.myTask.status,
                user: this.myTask.user,
                content: this.myTask.content,
                id: this.myTask.id,
                rate: this.myTask.rate
            }
        });
        dialogRef.afterClosed().subscribe(result => {
            this.selectedOption = result;
        });
}
}
在父html中,我有:

<visTimeline (myTask)="returnTask($event)"></visTimeline>
export class VisTimelineComponent {
    @Output() myTask: EventEmitter<any> = new EventEmitter<any>();
}

Timeline.prototype.onTaskDoubleClick
是库中的一个函数。

我认为您无法将数据传递到模态组件中。尝试使用componentInstance方法

    openDialogEditTask() {
        console.log(this.myTask);
        let dialogRef = this.dialogEditTask.open(DialogEditTask, {
            height: '90%',
            width: '80%'
        });
        dialogRef.componentInstance.myTaskValue = this.myTask; //<- passing data into DialogEditTask component
        dialogRef.afterClosed().subscribe(result => {
            this.selectedOption = result;
        });
}
openDialogEditTask(){
console.log(this.myTask);
让dialogRef=this.dialogEditTask.open(dialogEditTask{
身高:90%,
宽度:“80%”
});
dialogRef.componentInstance.myTaskValue=this.myTask;//{
this.selectedOption=结果;
});
}
在对话框EditTask中声明一个变量
myTaskValue:any


当调用openDialogEditTask时,您将在myTaskValue变量中获得传递到DialogEditTask组件的所有值

?如何使用openDialogEditTask中的数据,使用可能有助于喜欢数据的安全运算符?。单击按钮时调用的是什么?编辑任务什么是安全运算符?只有在任务准备就绪时才显示该按钮,如编辑任务我可以将数据传递到模式组件中,但我想我获取数据太晚了,因为调用了openDialogEditTask在returnTask之前,所以我打开对话框时没有这些信息,但在打开对话框之后才有。如何打开openDialogEditTask()函数。请添加更多代码。如果在调用后自动调用,请将此.openDialogEditTask()放入returnTask()中。否则,可能会出现变化检测问题。在代码中使用ngZone,您认为更改不会被检测到。如果可能,添加代码的plnkr@AdrienI通过单击按钮调用openDialogEditTask()。@Adrien尝试将onTaskDoubleClick的发射放在角度区域中。这可能是变化检测的问题。查看我的答案,了解如何使用ngZone。我希望这会有帮助
    openDialogEditTask() {
        console.log(this.myTask);
        let dialogRef = this.dialogEditTask.open(DialogEditTask, {
            height: '90%',
            width: '80%'
        });
        dialogRef.componentInstance.myTaskValue = this.myTask; //<- passing data into DialogEditTask component
        dialogRef.afterClosed().subscribe(result => {
            this.selectedOption = result;
        });
}