首页 > 解决方案 > 一个函数中的角度组件类变量集在另一个函数中未定义

问题描述

我有一个带有 viewChild() 绑定到子组件的组件,我用它来调用子组件中的函数。该函数接受 true 或 false 的参数,旨在将子组件中的类变量设置为参数的值。然后,类变量意味着在子组件中另一个函数的 if 语句中读取。

到目前为止,我已经成功地从父组件调用了子组件函数,将布尔参数传递给它,设置类变量,并将其打印到控制台。我已经验证了类函数包含在组件的“this”中。

在父组件中:

  if (res[0] === undefined) {
    this.typeAhead.badRequest(true);
  }

在子组件中:onSubmit() 函数中的控制台日志仅返回声明变量时设置的 _badRequestFlag 的值,而不是在 badRequest() 中分配的值。

private _badRequestFlag: boolean = false;

badRequest (res: boolean) {
  this._badPlaRequestFlag = res;
}

onSubmit (): void {
  console.log('BAD PLA REQUEST:, ', this);
    if (this._badRequestFlag === true) {
      alert('Does Not Exist');
      throw (new Error('Does Not Exist'));
}

当我尝试在 onSubmit() 函数中使用类变量时,它的值只是声明它的值,而不是在 badRequest() 函数中设置的值。我假设我遇到了范围界定问题,但我无法确定什么以及如何解决它。

标签: javascriptangulartypescript

解决方案


我建议使用输入来设置 badRequestFlag :

class ChildComponent {
  @Input() badRequestFlag: boolean;
}


@Component({
selector: 'app',
  template: `
    <child-component [badRequestFlag]="true"></child-component>
  `
})

您可以将其绑定到父控制器中的变量:[badRequestFlag]="requestFlag"


推荐阅读