angular - Angular 10 / 如何在具有 2 个类的 1 个文件之间共享 1 个变量 / Angular Material Dialog 组件
问题描述
我正在使用具有以下结构的 Angular Material Dialog 组件:
import {Component, Inject} from '@angular/core';
import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
export interface DialogData {
animal: string;
name: string;
}
/**
* @title Dialog Overview
*/
@Component({
selector: 'dialog-overview-example',
templateUrl: 'dialog-overview-example.html',
})
export class DialogOverviewExample {
animal: string;
name: string;
constructor(public dialog: MatDialog) {}
openDialog(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '250px',
data: {name: this.name, animal: this.animal}
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
this.animal = result;
});
}
}
@Component({
selector: 'dialog-overview-example-dialog',
templateUrl: 'dialog-overview-example-dialog.html',
})
export class DialogOverviewExampleDialog {
constructor(
public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
@Inject(MAT_DIALOG_DATA) public data: DialogData) {}
onNoClick(): void {
this.dialogRef.close();
}
}
如您所见,它有 2 个类,但只有 1º 类包含在父组件 .html 中
<app-filter-modal [requestForm]="requestForm" [name]="name"
[animal]="animal"></app-filter-modal>
我需要链接出一个@Input,一个父组件变量与同名的 2º 类(创建模态窗口本身的类)变量:
[requestForm]="requestForm"
但是我得到了一个错误,因为我不能在 2º 类选择器中包含上面的行,因为 Angular Material Dialog 不能这样工作。
如何将父组件变量requestForm与具有相同名称 ( requestForm ) 的 2º 类 Angular Material Dialog 变量相关联。我的第一个想法是在包含两者的文件中的两个类之间共享变量。
解决方案
就像您对“名称”和“动物”所做的那样。(尽管缺少 @Input 装饰器)
将 requestForm 添加到 DialogData
export interface DialogData {
animal: string;
name: string;
requestForm: any;
}
在对话框打开器组件中创建输入。
@Component({
selector: 'dialog-overview-example',
templateUrl: 'dialog-overview-example.html',
})
export class DialogOverviewExample {
@Input() requestForm: string;
打开时发送到对话框
openDialog(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
width: '250px',
data: {
name: this.name,
animal: this.animal,
requestForm: this.requestForm
}
});
推荐阅读
- python - Python:每 100 行大数据帧应用一次函数
- css - CSS 动画 (transform: rotateY(180deg);) 完美运行,除了 iOS 上的 Chrome
- php - Guzzle api调用执行时间太长,php中的foreach循环
- r - R中的科学记数法
- django-channels - Django Channels 方法语法
- kubernetes - 入口配置设置不会重定向到正确的页面
- reactjs - 在 React-Native 中渲染屏幕内容之前渲染底部标签动画。需要一个用于滞后动画的 Workarround
- javascript - 纯 Javascript 菜单晚餐提示作为输出,选择输入
- javascript - 如何使用 NodeJS 并行下载多个文件并在完成后执行回调?
- python-3.x - Jupyter 笔记本模块导入不起作用