Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么异步验证程序回调赢了';没有组件上下文?_Angular_Typescript - Fatal编程技术网

Angular 为什么异步验证程序回调赢了';没有组件上下文?

Angular 为什么异步验证程序回调赢了';没有组件上下文?,angular,typescript,Angular,Typescript,我注意到我没有从组件的某个方法访问该组件,我将该方法分配给一个异步验证器(模拟超时) 因此,我需要使用bind()强制其上下文。异步验证器总是这样吗?或者,是否还缺少任何其他内容,以便此方法将上下文保留在它所属的位置 代码如下: 请注意验证器的分配: this.asyncExampleValidator.bind(this) 在数据驱动的.component.ts中,您可以 把“这个”放在你想要的地方 这里 onAddHobby(){ (this.myForm.get('嗜好')).push

我注意到我没有从组件的某个方法访问该组件,我将该方法分配给一个异步验证器(模拟超时)

因此,我需要使用bind()强制其上下文。异步验证器总是这样吗?或者,是否还缺少任何其他内容,以便此方法将上下文保留在它所属的位置

代码如下:

请注意验证器的分配:

this.asyncExampleValidator.bind(this)
在数据驱动的.component.ts中,您可以 把“这个”放在你想要的地方

这里

onAddHobby(){
(this.myForm.get('嗜好')).push(newformcontrol(“”,Validators.required,this.asyncExampleValidator.bind(this)));
}
“这”可能不是你所期望的 asyncExampleValidator也有同样的问题


我知道你应该在帖子中提供相关代码,因为链接可能会改变,只是一个建议:)@ASomeOneJ:我如何在这里嵌入plunkr代码?我想我在StackOverflow的其他问题中也看到过,我对实例函数一无所知。我尝试了它,而不是bind(),它很有效。然而,我觉得使用bind()更舒服,尽管他们解释说这是一个不太推荐的选择。谢谢你给我指出那个信息。
 onAddHobby() {
      (<FormArray>this.myForm.get('hobbies')).push(new FormControl('', Validators.required, this.asyncExampleValidator.bind(this)));
    }