Я пытаюсь использовать *ngFor
для набора идентичных входов, за исключением свойства, к которому должен быть привязан вход.
<mat-form-field *ngFor="let prop of [ID, Name, Nickname]">
<input matInput type="text" placeholder="prop.key" #propInput [(ngModel)]="prop">
<button mat-icon-button matSuffix mat-icon-button *ngIf="propInput.value" (click)="prop='';">
<mat-icon>close</mat-icon>
</button>
</mat-form-field>
<!-- bind test -->
<input matInput type="text" placeholder="Name Test" #propInput [(ngModel)]="Name">
prop.key
не работает, но это отдельный вопрос.
Вот привязанный компонент:
import { Component } from '@angular/core';
import { EntitySrcService } from '../entity-src.service';
@Component({
selector: 'app-entity-table',
templateUrl: './entity-table.component.html',
styleUrls: ['./entity-table.component.less']
})
export class EntityTableComponent {
constructor(
private entitySrc: EntitySrcService
) {}
public get ID(): string {
return this.entitySrc.id;
}
public set ID(value: String) {
this.entitySrc.id = value;
}
public get Name(): string {
return this.entitySrc.name;
}
public set Name(value: String) {
this.entitySrc.name = value;
}
public get Nickname(): string {
return this.entitySrc.altName;
}
public set Nickname(value: String) {
this.entitySrc.altName = value;
}
}
По большей части это работает, как и ожидалось, но кажется, что привязка [(ngModel)]
только читает свойство и не записывает вЭто.Так, например, если я обновляю входные данные теста привязки, поле Имя в цикле ngFor
обновляется, чтобы соответствовать, но обновление поля в цикле ngFor
не обновляет поле в тесте.
Я использую get/set
свойства в компоненте для прокси к фактическому месту хранения, но я понимаю, что свойство get/set
должно действовать так же, как и обычное свойство (и использование обычного свойства имеет то же поведение одностороннего связывания).
Итак, как правильно перебрать набор свойств, с которыми я хочу связаться?