【发布时间】:2019-08-19 17:53:57
【问题描述】:
我正在尝试从父组件打开模型。因此,我从父组件中打开了虚拟对话框,并从 how to pass data to Angular ng-bootstrap modal for binding 获取帮助。在 Dialog 而不是 dummy text 上,我有输入框来显示来自父组件的信息,同时用户可以编辑此信息并要求将此更改发送回父信息。我尝试使用 tokeninjection 来做 Angular Material MAT_DIALOG 之类的事情,但我并没有完全遵循它。
import { Component, OnInit, InjectionToken, Injector, OnDestroy,
TemplateRef, Inject } from '@angular/core';
import {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';
export interface CancelDialogData {
name: string; // this can be any string;
Comments: string;
}
export declare const CUSTOM_DIALOG_DATA: InjectionToken<any>;
@Component({
selector: 'app-reject-dialog',
templateUrl: './reject-dialog.component.html',
styleUrls: ['./reject-dialog.component.css']
})
export class MyDialogComponent implements OnInit {
constructor(public activeModal: NgbActiveModal,
@Inject(CUSTOM_DIALOG_DATA) public data: CancelDialogData) { }
ngOnInit() {
}
onCancelClick(): void {
this.activeModal.close();
}
}
来自父组件:
const dialogRef = this.modal.open(CancelDialogComponent, data:
{name: '', approverComments: ''});
当我尝试传递此数据时,我遇到编译器错误,即数据不是 NgbModalOptions。 我真的不明白这里的 InjectionToken,它看起来比@Input/@output 更干净。请协助如何实现它,如 Active material Dialog。
【问题讨论】:
标签: angular modal-dialog ng-bootstrap