Angular 更新信息传递到对话框
我有一个组件,当点击时,它会获取数据,接收数据,打开一个模式并将数据传递给它 虽然modal仍然开放,但我进一步要求提供更多数据 如何将新数据传递到已打开的模式 这是获取并打开对话框的代码Angular 更新信息传递到对话框,angular,Angular,我有一个组件,当点击时,它会获取数据,接收数据,打开一个模式并将数据传递给它 虽然modal仍然开放,但我进一步要求提供更多数据 如何将新数据传递到已打开的模式 这是获取并打开对话框的代码 updateSomeData() { // fetch additional data } openDialog() { this.cqohs.fetchData(this.itemSelected).subscribe(({ data }: any) => { this.dialog.op
updateSomeData() {
// fetch additional data
}
openDialog() {
this.cqohs.fetchData(this.itemSelected).subscribe(({ data }: any) => {
this.dialog.open(DialogComponent,
{
data: {
a: this.someData,
b: this.updateSomeData
}
});
这段代码打开并将数据正确地传递给对话框,在对话框组件本身中,根据某些条件,我调用函数b
,以获取额外的数据,我希望这些数据被转发回对话框,但没有发生。额外的数据会被提取出来,但不会传递给现在已经打开的对话框
问题
Material对话框中的数据注入(我假设您使用它?)正在使用
PortalInjector
s:打开模式时,令牌被注入其中
如果希望向对话框发送其他数据,则不能
您有几种解决方案:
- 使用服务共享数据
- 使用
将当前对象应用于函数(尽管不推荐)b:this.updateSomeData.apply(this)
- 将函数直接添加到
,这样它就不会依赖另一个组件来运行函数:依赖项已加载到对话框组件中
李>对话框组件中
- 使用静态方法设置组件(也不推荐)
- 在打开对话框之前加载所有数据
如果您很难选择解决方案,请告诉我们您试图实现的目标,然后我们可以提供最佳选项。材质对话框中的数据注入(我假设您使用它?)正在使用
PortalInputor
s:打开模式时,会将令牌注入其中
如果希望向对话框发送其他数据,则不能
您有几种解决方案:
- 使用服务共享数据
- 使用
将当前对象应用于函数(尽管不推荐)b:this.updateSomeData.apply(this)
- 将函数直接添加到
,这样它就不会依赖另一个组件来运行函数:依赖项已加载到对话框组件中
李>对话框组件中
- 使用静态方法设置组件(也不推荐)
- 在打开对话框之前加载所有数据
如果您很难选择解决方案,请告诉我们您想要实现的目标,然后我们可以提供最佳选择。您似乎在使用角材料。根据文件 打开api返回对新打开对话框的引用。因此,您可以利用这一点,在需要时随时更改并传递新值
openDialog() {
let component = this.dialog.open(DialogDataExampleDialog, {
data: {
animal: 'panda'
}
});
setTimeout(() => {
component.componentInstance.data.animal = 'lion'
}, 5000)
}
看到它工作。等待5秒钟,查看数据是否发生变化
此外,您还可以使用共享服务完成工作,希望这会有所帮助。您似乎在使用棱角材料。根据文件 打开api返回对新打开对话框的引用。因此,您可以利用这一点,在需要时随时更改并传递新值
openDialog() {
let component = this.dialog.open(DialogDataExampleDialog, {
data: {
animal: 'panda'
}
});
setTimeout(() => {
component.componentInstance.data.animal = 'lion'
}, 5000)
}
看到它工作。等待5秒钟,查看数据是否发生变化
您还可以使用共享服务完成工作,希望这会有所帮助。好东西。即使我知道这件事,我也不会想到。看起来不是很好的代码,但做了我想要的。我接受这个,好东西。即使我知道这件事,我也不会想到。看起来不是很好的代码,但做了我想要的。我接受这个。