如何在Angular中从模式包装器服务公开afterClosed()方法/可观察
我目前正试图通过为自己制作一个小应用来教自己编码和角度。在我的应用程序中,我为角材料ModalDialog制作了一个包装服务。我的应用程序是AngularJS和AngularJS的混合(我已经为此工作了一段时间) 包装器服务如下所示:如何在Angular中从模式包装器服务公开afterClosed()方法/可观察,angular,typescript,angular-material,Angular,Typescript,Angular Material,我目前正试图通过为自己制作一个小应用来教自己编码和角度。在我的应用程序中,我为角材料ModalDialog制作了一个包装服务。我的应用程序是AngularJS和AngularJS的混合(我已经为此工作了一段时间) 包装器服务如下所示: export class ModalDialogWrapperService { constructor(private dialog: MatDialog, private zone: NgZone) { } openWarningWindow(w
export class ModalDialogWrapperService {
constructor(private dialog: MatDialog, private zone: NgZone) {
}
openWarningWindow(warning) {
this.zone.run(() => {
const dialogRef = this.dialog.open(WarningComponent, {
data: warning,
panelClass: 'dialog--warning'
});
dialogRef.afterClosed().subscribe(() => {
console.log('I need access to this');
});
});
}
这是一个很好的角度组件,我可以通过导入我的服务并调用这样的方法来提高模式,下面是一个使用服务的组件方法:
// component code
public raiseWarning(warning: any): void {
this.modalDialogWrapperService.openWarningWindow({
type: warning.type,
id: warning.id,
tags: warning.tags
});
}
这是伟大的,但我需要访问时,对话框关闭和它带来的数据回来。我可以在我的服务中捕获它,请参阅控制台.log
,但我无法在组件中访问它。我应该像这样在组件中添加代码吗
// component code
public raiseWarning(warning: any): void {
const dialogRef = this.modalDialogWrapperService.openWarningWindow({
type: warning.type,
id: warning.id,
tags: warning.tags
});
dialogRef.afterClosed().subscribe(() => {
console.log('I am in the component');
});
}
我得到一个未定义的错误,我的问题是,如何将afterClosed().subscribe
从包装器服务公开给组件。非常感谢您的建议。我是否需要像这样从服务中返回对话框ref
openWarningWindow(warning) {
this.zone.run(() => {
// const dialogRef =
return this.dialog.open(WarningComponent, {
data: warning,
panelClass: 'dialog--warning'
});
});
}
我用修改过的组件代码尝试了一下,但没有成功。我收到错误TypeError:无法读取未定义的属性'afterClosed'
我没有从openWarningWindow中看到return语句。我怀疑情况可能是这样的:
openWarningWindow(warning) {
return this.zone.run(() => {
// const dialogRef =
return this.dialog.open(WarningComponent, {
data: warning,
panelClass: 'dialog--warning'
});
});
}我已经对此进行了分析,我似乎能够捕捉到我的组件中可观察到的内容。现在,我只需要将数据从警告组件
返回到调用服务/引发模式的组件。