【发布时间】:2016-07-21 02:38:31
【问题描述】:
子组件有两个数据绑定输入属性,一个是拼写错误string (inputVariable),另一个是string[] (inputArray) 类型。
import {Component, Inject, Input} from 'angular2/core';
@Component(
{
selector: 'child-app',
template: `
{{inputVariable}}
<input type="button" (click)="onButtonOneClick()" value="changeFoo">
<ul>
<li *ngFor="#el of inputArray"> {{el}} </li>
</ul>
<input type="button" (click)="onButtonTwoClick()" value="ChangeLi">
`
})
export class ChildAppComponent {
@Input() inputVariable: string;
@Input() inputArray: string[];
onButtonOneClick() {
this.inputVariable = 'new string';
}
onButtonTwoClick() {
this.inputArray[0] = 'New element String';
}
}
父组件具有相同的属性并在模板内初始化子组件对应的属性([inputArray]="inputArray" inputVariable="inputVariable")
import {Component} from 'angular2/core';
import {ChildAppComponent} from './childApp.component';
@Component({
selector: 'my-app',
template:
`
{{inputVariable}}
<input type="button" (click)="onButtonOneClick()" value="changeFoo">
<ul>
<li *ngFor="#el of inputArray"> {{el}} </li>
</ul>
<input type="button" (click)="onButtonTwoClick()" value="ChangeLi">
<hr>
<child-app [inputArray]="inputArray" inputVariable="inputVariable"> </child-app>
`,
directives: [ChildAppComponent]
})
export class AppComponent {
inputVariable: string = 'foo';
inputArray: string[] = ['one', 'two'];
onButtonOneClick() {
this.inputVariable = 'new string';
}
onButtonTwoClick() {
this.inputArray[0] = 'New element String';
}
}
父组件和子组件内的按钮单击会更改相应属性的值(buttonOne -> inputVariable & buttonTwo -> inputArray)
当点击第二个按钮(改变string[]属性值)时,父组件和子组件都会发生变化
当点击第一个按钮(更改string 属性值)时,仅发生在父级或子级内部(无论我点击了哪个组件的按钮)
- 为什么行为因属性类型而异?
- 如何在子组件和父组件的
string属性之间进行双向绑定?
【问题讨论】:
标签: angular typescript data-binding