我是Angular的新手,目前遇到了这样一种情况:我有一个服务 getAnswers():Observable<AnswerBase<any>[]>
,以及两个相关的组件:
- online-quote
- dynamic-form
online-quote 组件在其 ngOnInit()
方法中调用了服务 getAnswers():Observable<AnswerBase<any>[]>
,并将结果传递给了组件 dynamic-form。
为了说明这种情况,以下是我的两个组件的代码:
online-quote.component.html:
<div>
<app-dynamic-form [answers]="(answers$ | async)"></app-dynamic-form>
</div>
在线报价组件.ts:
@Component({
selector: 'app-online-quote',
templateUrl: './online-quote.component.html',
styleUrls: ['./online-quote.component.css'],
providers: [DynamicFormService]
})
export class OnlineQuoteComponent implements OnInit {
public answers$: Observable<any[]>;
constructor(private service: DynamicFormService) {
}
ngOnInit() {
this.answers$=this.service.getAnswers("CAR00PR");
}
}
动态表单组件.dynamic-form.component.html:
<div *ngFor="let answer of answers">
<app-question *ngIf="actualPage===1" [answer]="answer"></app-question>
</div>
dynamic-form.component.ts:
@Component({
selector: 'app-dynamic-form',
templateUrl: './dynamic-form.component.html',
styleUrls: ['./dynamic-form.component.css'],
providers: [ AnswerControlService ]
})
export class DynamicFormComponent implements OnInit {
@Input() answers: AnswerBase<any>[];
constructor(private qcs: AnswerControlService, private service: DynamicFormService) { }
ngOnInit() {
this.form = this.qcs.toFormGroup(this.answers);
}
我的问题是,如果getAnswers():Observable<AnswerBase<any>[]>
的结果信息是一个observable,那么从在线报价传递信息到动态表单的正确方法是什么。我已经尝试了很多种方式,但都没有成功。我希望有人能帮助我。非常感谢!