ngModel 的动态值

Dynamic value for ngModel

我能否以某种方式将函数作为 ngModel 的值?我想稍后为我的输入设置值(所以我希望,当我更改 entity 值时,要更新的模型),这就是为什么我想在它之前检查它是否存在,因此功能。我有以下内容但无法正常工作:

@Component({
    selector: 'string-editor',
    template: `
    <dl>
      <dt>{{propertyName}}</dt>
      <dd>
        <input
          type="text"  
          [(ngModel)]="getValue()" />
      </dd>
    </dl>`,
})
export class StringEditor {

    @Input()  public propertyName: string;
    @Input()  public entity: any;

    getValue() {
      return this.entity ? this.entity[this.propertyName] : ''
    }
};

您不能将函数传递给 [(ngModel)],但您可以拆分绑定并在绑定中进行检查,例如

<input
  [ngModel]="entity ? entity[propertyName] : null"
  (ngModelChange)="entity && propertyName ? entity[propertyname] = $event: null"

不建议在绑定中使用函数。你还能做的是,

[(ngModel)]="someValue"             //<<===changed



export class StringEditor {

    @Input()  public propertyName: string;
    @Input()  public entity: any;

    ngOnInit(){                     //<<<===added
       this.someValue=this.entity ? this.entity[this.propertyName] : ''
    }
};