我当前正在尝试在执行loadModalDialog之后加载模式。我试图在随后的部分中称呼它。我收到错误
Cannot read property 'dialog' of undefined
如果以下面的方式调用,我不会得到上面的错误,但是会得到一个与用户服务中的依赖项有关的错误,因为loadModalDialog会发起对协议组件的调用,该调用会查看执行过程中的值 userService。因此,我需要确保在执行userService之后需要调用this.loadModalDialog()。我需要将this.dialog的实例传递给函数loadModalDialog吗?
this.userService.load();
this.loadModalDialog();
组件
constructor( public dialog: ModalDialogService ) {
export class AppComponent implements OnDestroy {
this.userService.load().then(this.loadModalDialog);
}));
}
private loadModalDialog() {
const ref = this.dialog.open(AgreementComponent, {
// size: 'large'
});
ref.afterClosed.subscribe(result => {
console.log('3rd dialog closed', result);
});
}
答案 0 :(得分:0)
将函数传递到this
语句时,您正在丢弃.then
的上下文。
您的错误消息是一个红色标记,表明this
不是您认为的this
。它应该和.bind(this)
函数上的this.loadModalDialog
一样简单。
this.userService.load().then(this.loadModalDialog.bind(this));
或
this.userService.load().then(() => this.loadModalDialog());