【问题标题】:In Angular, can I bind the emited output of a component directly to a property?在 Angular 中,我可以将组件发出的输出直接绑定到属性吗?
【发布时间】:2019-04-05 04:05:18
【问题描述】:

我的主应用程序组件通过子组件上的@Output 修饰属性与子组件交互。输出属性使用和EventEmitter<>()。通常,该属性会发出一个简单的布尔值或数字。我想将此输出直接绑定到主应用程序中的属性。但我没有这样做。

我现在正在做的是:

//In my sub component:
@Output() subProperty = new EventEmitter<boolean>();

//In my main template:
<sub-component (subProperty)="setPropertyValue($event)"></subcomponent>

//In my main component (this I would like to avoid):
setPropertyValue(event) {
    this.mainProperty = event;
}

我想做的是避免主组件中的函数并直接绑定到我的属性,但是下面的代码不起作用:

//In my sub component:
@Output() subProperty = new EventEmitter<boolean>();

//In my main template:
<sub-component (subProperty)="mainProperty"></subcomponent>

无论如何我可以避免主要组件中的附加功能吗?

【问题讨论】:

    标签: angular typescript eventemitter


    【解决方案1】:

    我相信你能做的最好的就是:

    (subProperty)="mainProperty = $event"
    

    【讨论】:

      【解决方案2】:

      将后缀 Change 添加到属性的末尾,以便您可以在框语法中使用香蕉/足球。匹配的输入不是必需的,将被忽略。

      //In your sub component:
      @Output() subPropertyChange = new EventEmitter<boolean>();
      
      //In your main template:
      <sub-component [(subProperty)]="mainProperty"></subcomponent>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-23
        相关资源
        最近更新 更多