Angular @输入变量在HTTP请求时被填充
在我的Angular @输入变量在HTTP请求时被填充,angular,typescript,asynchronous,observable,Angular,Typescript,Asynchronous,Observable,在我的app.component.ts中,我从返回HTTP请求结果的服务调用函数: questions: QuestionBase<any>[]; constructor(service: QuestionService) { this.questions = service.getQuestions().subscribe(val => console.log(val)); //gets logged after the other console log below
app.component.ts
中,我从返回HTTP请求结果的服务调用函数:
questions: QuestionBase<any>[];
constructor(service: QuestionService) {
this.questions = service.getQuestions().subscribe(val => console.log(val)); //gets logged after the other console log below
}
我现在的问题是,当HTTP请求尚未完成时,
ngOnInit
中的toFormGroup
函数调用得太早。我不习惯观察。在getQuestions
中的HTTP请求完成后,如何调用该函数。我已经尝试了ngOnChanges
,但它甚至在ngOnInit
您可以在ngOnChanges中调用toFormGroup之前就被调用了。而且,如果需要,只在问题得到第一个值时调用toFormGroup。我现在在手机上,因此无法提供代码示例 您可以在ngOnChanges中调用toFormGroup。而且,如果需要,只在问题得到第一个值时调用toFormGroup。我现在在手机上,因此无法提供代码示例 在对问题执行任何操作之前,您可以通过检查ngOnChanges
中的问题是否有值来设置条件:
ngOnChanges() {
if(questions && questions.length) {
this.form = this.qcs.toFormGroup(this.questions);
}
}
在对问题执行任何操作之前,如果问题有值,可以通过检查
ngOnChanges
来设置条件:
ngOnChanges() {
if(questions && questions.length) {
this.form = this.qcs.toFormGroup(this.questions);
}
}
首先,您需要为subscribe()调用中的问题赋值: 此外,在子组件中,可以实现
ngOnChanges()
,并在值仍然为null时跳过对@Input()
属性的第一次绑定。SimpleChange
类具有布尔属性firstChange
ngOnChanges(changes: {[key: string]: SimpleChange}) {
if (!changes.questions.firstChange){
this.form = this.qcs.toFormGroup(this.questions);}
}
首先,您需要为subscribe()调用中的问题赋值: 此外,在子组件中,可以实现
ngOnChanges()
,并在值仍然为null时跳过对@Input()
属性的第一次绑定。SimpleChange
类具有布尔属性firstChange
ngOnChanges(changes: {[key: string]: SimpleChange}) {
if (!changes.questions.firstChange){
this.form = this.qcs.toFormGroup(this.questions);}
}
我已经尝试调用了
ngOnChange
而不是ngOnInit
,但仍在此行之前调用它:this.questions=service.getQuestions().subscribe(val=>console.log(val))代码>已记录,因此questions
数组为空,我收到错误。您可以检测它是否是第一次更改,或者该数组在ngOnChange中不为空。我已尝试调用ngOnChange
而不是ngOnInit
,但仍在此行之前调用:this.questions=service.getQuestions().subscribe(val=>console.log(val));
被记录,因此questions
数组是空的,并且我得到了错误。您可以检测它是否是第一次更改,或者在ngOnChangesI中数组不是空的get errors:','预期,找不到名称'key',属性'questions'在类型'[any,string]上不存在'注意,如果组件在其他地方使用,最好检查是否定义了questions
,而不是检查第一次更改,而不异步填充questions
。这加上@n00dl3是我在我的I get errors中建议的:','预期,找不到名称'key',属性'questions'没有类型“[任何,字符串]上不存在请注意,如果组件在其他地方使用,那么最好检查问题是否已定义,而不是检查第一次更改,而不是异步填充问题。这加上@n00dl3是我在@n00dl3中建议的内容哈哈,谢谢!:D她还有一个妹妹,她也很可爱交叉眼睛和几乎完全失明:P也许你看到了这张照片,是我最后一张个人资料照片。我想她需要休息一下,不再代表我:D@n00dl3哈哈,谢谢!:D她还有一个妹妹,她也很可爱,交叉眼睛和几乎完全失明:P也许你看到了这张照片,是我最后一张个人资料照片。我想她需要休息一下I’我代表我:D