无法读取未定义的属性“

时间:2020-03-10 17:32:06

标签: angular

我当前正在尝试在执行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);
    });
  }

1 个答案:

答案 0 :(得分:0)

将函数传递到this语句时,您正在丢弃.then的上下文。

您的错误消息是一个红色标记,表明this不是您认为的this。它应该和.bind(this)函数上的this.loadModalDialog一样简单。

this.userService.load().then(this.loadModalDialog.bind(this));

this.userService.load().then(() => this.loadModalDialog());