当前位置: 首页 > 知识库问答 >
问题:

元素中带有*ngFor的“name”属性的Angular2绑定

东方乐
2023-03-14

我正在试验角2和角材料。我使用< code>*ngFor让Angular生成< code >

这是< code > order-form . component . html 中的部分代码,它要求用户输入不同种类水果的数量:

<md-list-item>
  <md-icon md-list-icon>shopping_cart</md-icon>
  <md-input-container *ngFor="let fruit of fruits" class="fruit-input">
    <input mdInput [(ngModel)]="order[fruit]" [placeholder]="capitalize(fruit)" 
           [id]="fruit" name="{{fruit}}" required value="0" #fruitInput 
           (input)="onInput(fruitInput)">
  </md-input-container>
</md-list-item>

这是相应的<代码> order-form.compone

import { Component, OnInit } from "@angular/core";
import { Order } from "app/order";
import { PAYMENTS } from "app/payments";
import { OrderService } from "app/order.service";

@Component({
  selector: 'app-order-form',
  templateUrl: './order-form.component.html',
  styleUrls: ['./order-form.component.css']
})
export class OrderFormComponent implements OnInit {

  order = new Order();

  payments = PAYMENTS;

  fruits: string[] = [
    'apples',
    'oranges',
    'bananas'
  ];

  constructor(public service: OrderService) {
  }

  ngOnInit() {
  }

  get totalCost() {
    return this.service.getTotalCost(this.order);
  }

  onFocus(element: HTMLElement) {
    element.blur();
  }

  onSubmit() {
    console.log('onSubmit');
  }

  onInput(element: HTMLInputElement) {
    console.log(element);
    if (!this.service.isValidIntString(element.value)) {
      window.alert(`Please input a correct number for ${element.name}`);
      element.value = '0';
    }
  }

  capitalize(str: string): string {
    return this.service.capitalize(str);
  }

  get debug() {
    return JSON.stringify(this.order, null, 2);
  }
}

在Chrome浏览器中,当我右击“苹果”的时候

共有1个答案

戚良弼
2023-03-14

最终的答案

使用([name]=“fruit”name=“{{fruit}}”)和([attr.name]=”fruit“”或attr.name=“{froit}”)将起作用。

使现代化

如果要使用字符串<code>作为<code>name</code>属性的值,请使用

name="fruit"

name="{{'fruit'}}"

[name]="'fruit'"

否则,您将绑定components字段<code>fruit</code>的值(您的组件似乎没有该值)

源语言

默认情况下,Angular执行属性绑定。如果你想要属性绑定,你需要使它明确

 attr.name="{{fruit}}" (for strings only)

 [name]="fruit"

另请参阅

  • 角度2数据属性
  • 如何在Angular 2中添加条件属性
  • 属性和属性之间有什么区别
 类似资料:
  • 我想检查实际元素是否有值。 例如,我想检查巧克力是黑色还是白色。根据这个,我想显示正确的文本。 如何修复代码,使其正常工作?

  • 家长和孩子通过Angular.io官方指南中的服务示例进行交流。io在可观察的流名称中使用美元符号。 注意<代码> missionAnnounced $ < /代码>和<代码> mi 有人能解释一下吗: < li >为什么使用< code>$?这个符号背后的原因是什么?我总是需要对公共属性使用这个吗? < li >使用公共属性,但不使用方法(例如missionAnnouncements()、mis

  • 英文原文:http://emberjs.com/guides/templates/binding-element-attributes/ 除了普通文本,你可能也希望在模板中包含可以将其属性绑定到控制器的HTML元素。 例如,想象一下你的控制器中包含这样一个属性,它包含指向一幅图像的URL地址: 1 2 3 <div id="logo"> <img {{bind-attr src=logoUr

  • 我生成了新的@Directive角CLI, 并且我尝试在我的组件中使用(ChatWindowComponent) 即使within指令只是Angular CLI生成的代码: 我得到了错误: zone.js:388 未处理的promise拒绝:模板解析错误:无法绑定到“appContenteditableModel”,因为它不是“p”的已知属性。 我尝试了几乎所有可能的变化,t 有帮助吗?

  • SAX异常:s4s-att-invalid-value:元素“element”中“name”的属性值无效。记录原因:cvc-datatype-valid.1.2.1:“ns2:response”不是“ncName”的有效值。

  • 我正在创建一个Angular2项目,但复选框的双向绑定有问题。 我有一个名为listItem和List的类: 我正在从Azure search调用列表,该列表工作正常。问题是当我只是将值设置为复选框时。 但该值在单击时也始终为false。我试图使用[(ngModel)],但也不起作用。我还尝试创建一个函数: 但我收到了这个错误: 无法分配给对象“[object]”的只读属性“checked” 为什