2017-01-27 3 views
1

Можно ли как-то поставить функцию как значение для ngModel? Я хочу установить значение позже для моего ввода (поэтому я ожидаю, когда я изменю значение entity, обновляемую модель), поэтому я хочу проверить, если он существует, или нет, следовательно, функция. У меня есть следующий, и это не работает:Динамическое значение для ngModel

@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] : '' 
    } 
}; 

ответ

1

Вы не можете передать функцию [(ngModel)], но вы можете разделить связывание и сделать проверку в связывании как

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

Я думаю, что мой ответ по-прежнему сохраняется –

+0

Могу ли я использовать такую ​​функцию? '[(NgModel)] = "getSelectedSuffix (item.shift)"'? – OPV

+0

Нет, потому что при изменении значения значения тэг не может обновить значение с помощью ссылки на функцию. –

-1

Ее не рекомендуются использование функция в крепления. Что еще вы можете сделать, так это:

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



export class StringEditor { 

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

    ngOnInit(){      //<<<===added 
     this.someValue=this.entity ? this.entity[this.propertyName] : '' 
    } 
}; 
Смежные вопросы