You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular项目中如何向ngb modal模态框传递自定义数据

Ngb Modal 数据传递实现方案

父组件传参逻辑修改

你原代码中result.then的入参是弹窗关闭时的回传值,不是你要传入弹窗的参数,正确传参代码如下:

loadCheckingView(viewData, checkinview) {
  console.log(viewData); // 原始数据打印正常
  // 保存弹窗实例
  const modalRef = this.modalService.open(checkinview, { 
    ariaLabelledBy: 'modal-basic-title', 
    size: 'lg', 
    backdrop: 'static' 
  });
  // 给弹窗组件实例赋值传入的参数,属性名可自定义
  modalRef.componentInstance.receivedViewData = viewData;

  // 监听弹窗关闭后的回传结果
  modalRef.result.then((returnedData) => {
    console.log(returnedData); // 这里拿到的是弹窗内部主动回传的数据
  }, (reason) => {
    // 处理点击背景、ESC关闭等非主动确认关闭的场景
  });
}

弹窗组件接收数据逻辑

在你作为弹窗内容的checkinview组件中,需要声明对应输入属性接收数据:

import { Component, Input } from '@angular/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';

@Component({
  // 你的组件原有配置
})
export class CheckinViewModalComponent {
  // 属性名要和父组件中componentInstance后挂载的属性名完全一致
  @Input() receivedViewData: any; // 可替换为你实际的TS类型定义

  constructor(public activeModal: NgbActiveModal) {}

  // 若需要关闭弹窗时回传数据给父组件,调用close方法传入参数即可
  confirmClose() {
    const result = {
      // 你要回传的业务数据
    };
    this.activeModal.close(result);
  }
}

原代码异常说明

你原代码中第二个console.log(viewData)无法正常输出的原因是:result.then的回调参数是弹窗关闭时通过activeModal.close()主动传入的返回值,和你要传入弹窗的viewData不是同一个变量,若弹窗内部没有主动传参关闭的逻辑,自然无法拿到预期内容。


内容的提问来源于stack exchange,提问作者Kumara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:57:06