Проблема здесь должна быть простой, но я не могу инициализировать поле ввода для реактивной формы и иметь этот элемент управления как действительный.
Допустим, у меня есть этот код:
@Component({
selector: 'app-profile-editor',
templateUrl: './profile-editor.component.html',
styleUrls: ['./profile-editor.component.css']
})
export class ProfileEditorComponent {
profileForm = this.fb.group({
firstName: string,
lastName: string,
address: this.fb.group({
fName: ['initial value', [Validators.required]],
city: ['', [Validators.required]],
state: [''],
zip: ['']
}),
});
constructor(private fb: FormBuilder) { }
}
И в шаблоне, который я имею, скажем:
<input [(ngModel)]="firstName" formControlName="fName" />
Проблема в том, что установка значения по умолчанию таким способом не работает:
fName: ['initial value', [Validators.required]],
секундаспособ не работает:
fName: new FormControl('initial value', [Validators.required])
третий способ - , в шаблоне это не работает:
<div>
<input [(ngModel)]="firstName" formControlName="fName" [value]="'default value'"/>
</div>
Четвертыйспособ сделать это:
this.address.controls['fName'].setvalue('default value');
this.address.controls['fName'].updateValueAndValidity();
Поэтому, когда я пробую все эти комбинации или одну из них одновременно, и захожу в отладчик и проверяю, каково значение: this.address.control ['fName']. value это дает мне пустое значение -> ''
в результате, даже если в моей форме поле заполнено изначально, и я должен предоставить другие поля, поэтому из-за этогополе моя форма недействительна я тогда не показывает мою кнопку сохранения как включенную.
может кто-нибудь объяснить, почему этоэто поведение или объяснить, как правильно поступить с этим?
Примечание: я просто привожу здесь небольшой пример кода в качестве подсказки, потому что мой реальный код является частью большего и проприетарного углового кода 6application.
Я должен очистить этот пример, но вот один, использующий:
https://stackblitz.com/edit/angular-reactive-forms-jhg6ds?file=app%2Fapp.component.ts
(обновлю этот пример позже.)
В этом случае значение по умолчанию не отображается, потому что я думаю, что это своего рода параллелизм с содержимым ngModel, поэтому я хочу установить событие этого значения по умолчанию, если содержимое ngModel пусто (например, при созданиипустая форма, пользователь должен найти поле, уже заполненное (и затем действительное))