Угловое поле mat-form-field с проблемой FormControl и NgModel

У меня есть mat-form-field с полем ввода с type="number".

Я не уверен, следует ли мне использовать FormControl или NgModel в моем случае.

У меня есть дочерний компонент, который recieves является объектом ввода, и я должен сохранить то, что написано в поле ввода, в свойстве этого объекта.

это мой дочерний контроллер:

@Input()
  building: Building;  

@ViewChild("numberMatInput", {read: MatInput})
  numberMatInput: MatInput;
  numberInput: FormControl = new FormControl();

ngOnInit() {
    this.numberInput.valueChanges
    .subscribe(s => {
      this.building.radius = s;
    });
}

и мое мнение таково:

<mat-form-field appearance="outline">
     <mat-label>KM</mat-label>
     <input type="number" matInput #numberMatInput [formControl]="numberInput">
</mat-form-field>
<mat-icon matListIcon (click)="numberInput.setValue('')">close</mat-icon>

так что это работает, входное значение сохраняется в свойстве объекта -> this.building.radius, но что не работает, это панель, которую можно открыть при выборе здания, и если я закрою панель и открою ее снова, поле ввода пусто вместо отображения последнего значения перед закрытием панели.

Следует использовать NgModel? так что я могу использовать NgModel напрямую building.radius?

Извините, но я новичок в Angular!


person AJ989    schedule 30.08.2018    source источник
comment
Если вы работаете с Template driven forms, то ngModel или с Reactive forms, то FormControl   -  person Sivakumar Tadisetti    schedule 30.08.2018
comment
Какая у тебя угловая версия?   -  person Vikas    schedule 30.08.2018
comment
Я использую угловой 6.1.1   -  person AJ989    schedule 30.08.2018


Ответы (1)


на данный момент я решил это так, изменив с FormControl на:

[(ngModel)]="building.radius"

и все, поэтому он напрямую пишет в свойстве объекта, не уверен, что это лучший способ, но он работает

person AJ989    schedule 30.08.2018