Как изменить bindingPropertyName на @Output () программно - PullRequest
0 голосов
/ 28 мая 2018

мне нужно программно поменять bindingPropertyName для одного @Output ().

Я использую одну директиву для двухсторонней привязки между свойством в одном компоненте полимера 2.0 (с отражением trueT), а моим приложением в Angular5.

Код:

@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 голосов
/ 28 мая 2018

В Javascript объекты являются ссылками.

Так просто

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

Нужно сделать трюк

...