【问题标题】:Angular 2 : Creating object in interfaceAngular 2:在界面中创建对象
【发布时间】:2017-05-29 19:09:50
【问题描述】:

我正在尝试创建嵌套对象,如下所示

myForm value: 
{
  "name": {
         "firstname":"abc",
         "lastname":"xyz"
   },
  "address": {
    "street": "assdasdasdsa",
    "postcode": "8000"
  }
}

在界面中,有指定字符串、数字、数组类型语法的选项

我尝试了以下选项,但没有运气,它抛出错误“错误错误:找不到具有名称的控件:”(SO 和其他人的解决方法没有帮助)

export interface Customer {
    name: {
    firstname: string;
    lastname: string;
};
    addresses: Address[];
}

export interface Address {
    street: string;
    postcode: string;
}

您能否提供我上面提到的指定对象的选项?

Plunker-https://embed.plnkr.co/hQ6RtzCfPosfQl4HlbZQ/

在 Angular 1 中,使用范围对象和使用 ng-model 作为“myForm.name.firstname”很容易

Codepen 在 angular1 - https://codepen.io/nagasai/pen/mmYgbr 中尝试并尝试在 angular 2 中复制相同

【问题讨论】:

  • Plunker 工作正常吗?
  • 是的,Plunker url 工作正常,名称为字符串,我正在尝试将其更改为不工作的对象
  • Nameexport interface Name {firstname: string; lastname:string}地址:export interface Address {street: string;postcode: string;}和客户:export interface Customer{name: Name;addresses:Address[]}创建一个新界面
  • app.component.html:7 错误错误:找不到名称为'firstname'的控件,尝试使用上述选项后出现相同的错误

标签: angular typescript angular2-forms


【解决方案1】:

您的 TS 中有一个表单组 name,其中包含表单控件 firstnamelastname。您忘记在模板中应用它。所以你需要用formGroupName包装表单控件:

<div formGroupName="name"> <!-- Here -->
  <div class="form-group">
    <label>Name</label>
    <input type="text" class="form-control" formControlName="firstname">
    <input type="text" class="form-control" formControlName="lastname">
 </div>

Forked Plunker

【讨论】:

  • 感谢 AJT,效果很好.... :) 不确定是否会否决这个问题 :) :(
  • 很高兴听到它成功了!好吧,你得到了我的支持;P 有一个美好的一天/晚上/晚上,快乐的编码! :)
  • 非常感谢 AJT :)
猜你喜欢
  • 2018-05-11
  • 2017-06-07
  • 2018-01-18
  • 2023-03-11
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
相关资源
最近更新 更多