我希望将子组件值绑定到父组件。在< code>@Input()和< code>[(ngModel)]都不够用的情况下,如何做到这一点?
这是一个扑通
以< code>@Output()为例
@Output() event: EventEmitter<Type> = new EventEmitter();
通过< code>emit功能发送数据
send(): void {
this.event.emit(data);
}
阅读更多关于EventEmitter的信息
您可以像下面这样进行双向数据绑定:
@Component({
selector: 'app-sizer',
template: `
<div>
<button (click)="dec()" title="smaller">-</button>
<button (click)="inc()" title="bigger">+</button>
<label [style.font-size.px]="size">FontSize: {{size}}px</label>
</div>`
})
export class SizerComponent {
@Input() size: number | string;
@Output() sizeChange = new EventEmitter<number>();
dec() { this.resize(-1); }
inc() { this.resize(+1); }
resize(delta: number) {
this.size = Math.min(40, Math.max(8, +this.size + delta));
this.sizeChange.emit(this.size);
}
}
并在父组件的模板中对大小
进行双向绑定,如下所示:
<app-sizer [(size)]="fontSizePx"></app-sizer>
<div [style.font-size.px]="fontSizePx">Resizable Text</div>
它(双向绑定)只是属性绑定的语法糖,因此它等价于:
<app-sizer [size]="fontSizePx" (sizeChange)="fontSizePx=$event"></app-sizer>
当 prop
具有名为
prop 的 Input
属性和具有名称 propChange
的事件(输出
属性)时,可以使用 [(prop
)] 语法。
代码来自angular docs。有关更多信息,请导航到此地址:https://angular.io/guide/template-syntax#two-装订方式---
在这里,您还必须设置@Output
,并更改组件,如下所示:
export class CounterComponent {
@Output('initoChange') emitter: EventEmitter<string> = new EventEmitter<string>();
@Input('inito') set setInitoValue(value) {
this.count = value;
}
count: number = 0;
increment() {
this.count++;
this.emitter.emit(this.count);
}
decrement() {
this.count--;
this.emitter.emit(this.count);
}
}
这里是plunker的链接,请过目。
我对Angular2还很陌生,我有一个小问题: 在我的Login-Component-HTML中,我有两个复选框,我希望以两种方式将它们绑定到login-component-typescript数据绑定。 这是HTML: 这是组件.ts: 如果我单击一个复选框,我会在控制器(组件)中获得正确的值。 但是如果更改组件中例如的值,则复选框不会“获取”新值。 因此我无法操作组件中的复选框(就像我想在组件
编辑问题包括期望的行为, 我正在编写一个Angular 2应用程序,我不明白为什么Angular不能正确使用
Mpx针对表单组件提供了wx:model双向绑定指令,类似于v-model,该指令是一个语法糖指令,监听了组件抛出的输入事件并对绑定的数据进行更新,默认情况下会监听表单组件的input事件,并将event.detail.value中的数据更新到组件的value属性上。 简单实用示例如下: <view> <input type="text" wx:model="{{message}}"> <
双向绑定这个概念在angular出现的时候,就作为王牌概念. 现在几乎是个js前端框架,就有这个功能. 它的概念是: 某个变量, 如果展现在页面上的话: 如果在代码层面进行修改, 那么页面的值就会发生变化 如果在页面进行修改(例如在input标签中), 那么代码的值就会发生变化. 一个演示例子. 在我们的项目中,增加一个 vue页面: src/components/TwoWayBinding.vu
单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新。 有单向绑定,就有双向绑定。如果用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定。 什么情况下用户可以更新View呢?填写表单就是一个最直接的例子。当用户填写表单时,View的状态就被更新了,如果此时MVVM框架可以自动更新Model的状态,那就相当于我