Я использовал довольно стандартную модель для ввода материала два года go. С тех пор я несколько раз прогрессировал мою Angular версию, теперь на 9.0.7. В .ts…
import { FormControl, FormBuilder, FormGroupDirective, NgForm, Validators, FormGroup } from '@angular/forms';
. . .
@Component({
. . .
export class myComponent implements OnInit {
. . .
1_FormControl = new FormControl('', [
Validators.required,
]);
2_FormControl = new FormControl('', [
Validators.required,
]);
. . .
constructor (. . .) {}
myGroup: FormGroup;
ngOnInit() {
this.myGroup = new FormGroup({
A_Ctrl: new FormControl({value: '', disabled: true}),
B_Ctrl: new FormControl()
});
. . .
myFunc() {
console.log('test 1: ' + this.1_FormControl.value);
console.log('test 2: ' + this.2_FormControl.value);
}
Затем в HTML ...
<div [formGroup]="myGroup">
<mat-form-field class="full-width">
<input matInput placeholder={{userPlaceholder}} [formControl]="1_FormControl"
formControlName="A_Ctrl">
</mat-form-field>
<mat-form-field name="b2Form" autofocus class="full-width">
<input #input id="b2" focus="true" matInput placeholder={{varPlaceholder}} [formControl]="2_FormControl"
[type]="hide ? 'password' : 'text'"
formControlName="B_Ctrl" required>
<mat-icon size="1.8x" matSuffix fas (click)="hide = !hide" icon="{{hide ? 'eye' : 'eye-slash'}}"></mat-icon>
</mat-form-field>
</div>
В этом примере, если я нахожусь в среде разработчика, запускаю ng serve, когда я вхожу некоторый текст в полях ввода и вызовите myFun c (), значения отображаются просто отлично. Но если я скомпилирую, используя ng build --prod, и разверну его, когда я введу какой-то текст и вызову myFun c (), оба теста покажут «undefined». Моя теория заключается в том, что Angular раньше поддерживал две разные переменные, определенные для [formControl] и formControlName, но теперь, когда он скомпилирован, это не работает. Странно то, что он отлично работает в среде разработчиков.