我是Angular的新手。实际上,我正在尝试从服务订阅数据,并将这些数据传递到我的表单控件中,例如编辑表单。
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormArray, FormControl } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { QuestionService } from '../shared/question.service';
@Component({
selector: 'app-update-que',
templateUrl: './update-que.component.html',
styleUrls: ['./update-que.component.scss']
})
export class UpdateQueComponent implements OnInit {
questionsTypes = ['Text Type', 'Multiple choice', 'Single Select'];
selectedQuestionType: string = "";
question: any = {};
constructor(private route: ActivatedRoute, private router: Router,
private qService: QuestionService, private fb: FormBuilder) {
}
ngOnInit() {
this.getQuebyid();
}
getQuebyid(){
this.route.params.subscribe(params => {
this.qService.editQue([params['id']]).subscribe(res =>{
this.question = res;
});
});
}
editqueForm = this.fb.group({
user: [''],
questioning: ['', Validators.required],
questionType: ['', Validators.required],
options: new FormArray([])
})
setValue(){
this.editqueForm.setValue({user: this.question.user, questioning: this.question.questioning})
}
}
如果我在表单字段上使用[(ngModule)]
来设置元素的值,它可以正常工作,但会显示一个警告,即在Angular 7版本中它将被弃用。
如果我在我的表单字段上使用[(ngModule)]
来设置值到我的元素上,目前可以正常工作。但是在Angular 7版本中会有一个警告提示说这个语法将被废弃。
<textarea formControlName="questioning" [(ngModule)]="question.questioning" cols="70" rows="4"></textarea>
所以,我通过以下方式将值设置为我的表单控件,但该元素并未显示这些值。
setValue(){
this.editqueForm.setValue({user: this.question.user, questioning: this.question.questioning})
}
有人能告诉我如何为我的响应式表单设置值吗?
setValue
和patchValue
的区别以及为什么在这种情况下会起作用的细节。 - Sachin Gupta