Angular 9 matInput больше не работает в Production - PullRequest
0 голосов
/ 26 апреля 2020

Я использовал довольно стандартную модель для ввода материала два года 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, но теперь, когда он скомпилирован, это не работает. Странно то, что он отлично работает в среде разработчиков.

...