【问题标题】:Angular : how to declare object.property in ngModel dynamicallyAngular:如何在 ngModel 中动态声明 object.property
【发布时间】:2018-03-16 11:50:34
【问题描述】:
<input [(ngModel)]="Emp."+"dt.Rows[0]["columnname"]"> 

这个给

未定义

我正在使用MVC CustomHtmlHelper 创建textbox(Because we need to create a dynamic form basis on the database),控件得到完美渲染,但“Emp.Name”未定义。

由于对象是在 TS 中声明的。

<input [(ngModel)]="Name" > 

这很好

我想知道如何动态定义对象及其属性。 我正在使用angular 2MVC5

【问题讨论】:

  • 你的变量名到底是什么?
  • [(ngModel)]="Emp.Name"

标签: asp.net-mvc angular typescript asp.net-mvc-4 angular4-forms


【解决方案1】:

Emp.name 可以写成 Emp['Name']。试试看,

<input [(ngModel)]="Emp[dt.Rows[0]['columnname']]">

【讨论】:

  • "columnname" 应替换为 'columnname'
  • 但点击我想访问 Emp。说像 这样我就可以访问/获取 Emp 的所有属性。 (我通过 [(ngModel)]="Emp."+"SomeDynamicText" 的原因)
  • but yes the Emp is not declare as object in TS,i'm just randomly attaching "Emp." with it the column name. 那么您希望如何将未定义的对象绑定到 ngModel?
【解决方案2】:

像这样:

<input [(ngModel)]="['Emp' + dt.Rows[0][columnname]]">

如果你声明了正确的变量,比如

dt = {Rows: [{ name: John }]};
columnname = 'name';

那么你就有了

[(ngModel)]="EmpJohn"

【讨论】:

  • 但在click 我想访问 Emp。说像 这样我就可以访问/获取 Emp 的所有属性。 (我通过 [(ngModel)]="Emp."+"SomeDynamicText" 的原因)
  • 我问你最终的变量是什么。你问一个没有上下文的问题,你会从你的上下文中得到答案。提供一些上下文,我会回答你。
  • 我的最终变量是“Emp.Name”,“Emp.DOB”,但是是的,Emp 没有在 TS 中声明为对象,我只是随机附加“Emp”。有了它来自 DB 的列名,这就是我得到 DOB 的原因,名称未定义
  • 我们同意Emp 是您组件中的一个对象,它包含一个Name 属性,对吧?
  • 不,我的组件中没有任何变量名 Emp,因为我不知道用户在 DB 中将创建多少属性。我问是否可以声明[(ngModel)]="Emp.Name" 即使 Emp 不存在于组件中。
猜你喜欢
  • 2020-01-11
  • 2012-07-14
  • 1970-01-01
  • 2017-05-03
  • 2023-02-23
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多