Angular2:绑定到输入单选名称不起作用
Angular2: binding to input radio name doesn't work
在 Angular2 中,单向绑定到一组无线电输入的名称属性不起作用。例如:
<div [ngFormModel]="form">
<input type="radio" [name]="varName" [id]="id1" ngControl="r1">
<input type="radio" [name]="varName" [id]="id2" ngControl="r2">
<input type="radio" [name]="varName" [id]="id3" ngControl="r3">
</div>
加载页面时,名称不是任何这些单选输入的属性。
如果这像绑定到 select 属性 一样有效,名称 属性 将设置在 javascript dom 元素上。这意味着虽然它不显示在视图中,但它实际上已在 HTMLElement 上设置。
用下面的代码来说明:
import {Component} from '@angular/core'
import {ControlGroup, Control} from '@angular/common'
@Component({
selector: 'my-app',
providers: [],
template: `
<form [ngFormModel]="group">
<input type="radio" [attr.name]="name" ngControl="test">
<input type="radio" [attr.name]="name" ngControl="test2" ref-example>
<input type="radio" [name]="name" ngControl="test3" ref-exampletwo>
<p>using [attr.name]: {{example.name | json }}</p>
<p>using [name]: {{exampletwo.name | json }}</p>
</form>
`
})
export class App {
name: "test"
group: ControlGroup
constructor() {
this.group = new ControlGroup({
test: new Control(""),
test2: new Control(""),
test3: new Control("")
})
}
}
http://plnkr.co/edit/xHkgb0BgPzZLwyFpTo1W?p=preview
你真正想做的是:
[attr.name]="name"
这将在元素上设置 属性。
我想@Schippie 写的是正确的。使用
[attr.name]="name"
而不是
[name]="name"
(他的 Plunker 有一些问题)
在 Angular2 中,单向绑定到一组无线电输入的名称属性不起作用。例如:
<div [ngFormModel]="form">
<input type="radio" [name]="varName" [id]="id1" ngControl="r1">
<input type="radio" [name]="varName" [id]="id2" ngControl="r2">
<input type="radio" [name]="varName" [id]="id3" ngControl="r3">
</div>
加载页面时,名称不是任何这些单选输入的属性。
如果这像绑定到 select 属性 一样有效,名称 属性 将设置在 javascript dom 元素上。这意味着虽然它不显示在视图中,但它实际上已在 HTMLElement 上设置。
用下面的代码来说明:
import {Component} from '@angular/core'
import {ControlGroup, Control} from '@angular/common'
@Component({
selector: 'my-app',
providers: [],
template: `
<form [ngFormModel]="group">
<input type="radio" [attr.name]="name" ngControl="test">
<input type="radio" [attr.name]="name" ngControl="test2" ref-example>
<input type="radio" [name]="name" ngControl="test3" ref-exampletwo>
<p>using [attr.name]: {{example.name | json }}</p>
<p>using [name]: {{exampletwo.name | json }}</p>
</form>
`
})
export class App {
name: "test"
group: ControlGroup
constructor() {
this.group = new ControlGroup({
test: new Control(""),
test2: new Control(""),
test3: new Control("")
})
}
}
http://plnkr.co/edit/xHkgb0BgPzZLwyFpTo1W?p=preview
你真正想做的是:
[attr.name]="name"
这将在元素上设置 属性。
我想@Schippie 写的是正确的。使用
[attr.name]="name"
而不是
[name]="name"
(他的 Plunker 有一些问题)