如何以编程方式更改@Output()上的bindingPropertyName

时间:2018-05-28 12:49:17

标签: angular polymer

我需要以编程方式在一个@Output()上更改bindingPropertyName。

我使用一个指令在一个聚合物2.0组件中的属性(其中reflectToAttribute设置为true)与我在Angular 5中的应用程序之间进行双向绑定。

代码:

@Directive({
  selector: "[bindPolymer]"
})
export class BindPolymerDirective {

  @Output("valueChange") change: EventEmitter<any> = new EventEmitter();

  @HostListener("value-changed", ["$event.target.value"]) onInputChange(value) {
    if (value) {
      this.change.emit(value);
    }
  }
}
<polymer-input [(value)]="user" bindPolymer></polymer-input>

在这种情况下,需要双向绑定的属性是值,因此它就像魅力一样。但在其他情况下,他可能会有所不同。

任何人都可以告诉我如何实现这一目标?或者也许给我另一种解决问题的方法?谢谢

1 个答案:

答案 0 :(得分:0)

在Javascript中,对象是引用。

如此简单地做

@Output("valueChange") change: EventEmitter<any> = new EventEmitter();
@Output("valueChangeBis") changeBis = this.change;

应该做的伎俩