假设我有两个组件,即父A
和嵌套子B
。我想将aVal
的{{1}}字段绑定到A
的{{1}}字段,以便bVal
设置为B
的值{ {1}}值变化。我知道我可以使用aVal
并在bVal
更改时发出事件但我不想明确关心事件,我只想要简单的值绑定。它甚至可能吗?
父组件:
bVal
子组件:
EventEmitter
我认为绑定可能看起来像bVal
但它不起作用。
我决定我能做的最好的事情如下。这很清楚,让我忽略尽可能多地处理事件。
父组件:
import {Component, Output} from "@angular/core";
@Component({
selector: 'a',
template: '<b></b>'
})
export class A {
@Output() aVal: string;
}
子组件:
import {Component, Output} from "@angular/core";
@Component({
selector: 'b',
template: '<input [(ngModel)]="bVal"/>'
})
export class B {
@Output() bVal: string;
}
答案 0 :(得分:2)
某种类型的服务(工厂有意义)可以注入两个组件,然后绑定到组件变量。这是一个昂贵的解决方案,但据我所知,Angular2以这种方式构建,以防止一个模块/组件中的数据到达其他模块/组件中的数据。这是为了安全并确保组件之间的意外通信不会发生。
此外,Output()
装饰器可用于发出附加了所需值的事件。这是一个concise example
答案 1 :(得分:0)
在A中使aVal
成员(不是输出)
aVal: string;
在B中制作bVal
并输入:
@Input() bVal: string;
应该这样做。
顺便说一下,(bVal)="aVal"
无效。 (someChangeOutput)
=&#34;处理程序($ event)&#34;`需要一个处理程序,而不是一个成员/值