2017-06-18 83 views
0

我无法在文档中的任何位置找到如何检测查找组件的更改。其他不使用ngModel的组件也是如此,例如Pick。甚至有相关的issue on GitHub超过2个月没有反应。如何监听查找更改

下面是示例代码:

<ngl-lookup [(value)]="value" [lookup]="lookupAsync" field="formatted_address" [(pick)]="address"> 
    <template nglLookupLabel>Type an address:</template> 
    <div nglLookupHeader class="slds-text-body--small">Most relevant cities</div> 
    <template nglLookupItem let-ctx> 
    <div class="slds-media__body"> 
     <div class="slds-lookup__result-text">{{ctx.formatted_address}}</div> 
     <span class="slds-lookup__result-meta slds-text-body--small">Place ID: {{ctx.place_id}}</span> 
    </div> 
    </template> 
</ngl-lookup> 

及相关包机可以在组件页上的 “查找” 部分中找到:

我缺少的东西?我真的很困惑,看到这么多的组件不使用ngModel。

非常感谢您的帮助。

+0

你没有保存plnkr发布 – Skeptor

+0

之前@Skeptor谢谢,我指的是原来的包机放置在其网站上。我没有注意到这不是一个正常的链接。我提供了一个指向组件页面的链接。 – Bielik

+0

让我了解您的要求。每当我们进入查找你想要做什么?你想能够处理组件中的事件? – Skeptor

回答

1
[(pick)]="address" 
  1. 上述语法是一个双向的数据绑定。从某种意义上说,它将来自组件的数据绑定到组件输入和输入。
  2. 这是一个捷径[pick]="superhero" (pickChange)="setSuperhero($event)"

其中setSuperhero集更新的值this.superhero

解决问题的方法:

变化[(pick)]="superhero"这样:

[pick]="superhero" (pickChange)="superheroPicked($event)" 

内部组件:

superheroPicked(superhero){ 
    this.superhero = superhero; 
    console.log(superhero); 
} 

选择并打印时,以上将设置超级英雄的新价值控制台中的值。

相关Plnkrhttps://plnkr.co/edit/FaTlh3wzreKkaKZORjKx?p=preview

+0

谢谢你的帮助,这正是我所需要的,我发现它也适用于“Pick”组件,希望对其他人也是如此。现在我需要问,我是否错过了文档中的某些内容?你也知道为什么这样做吗?我想这使它更难用于表单等。我将不得不基于这个实现ControlValueAccessor创建我自己的组件。或者我又错过了什么? – Bielik

+0

它是一个通用的惯例。我检查了库的源代码以确保它们也遵循相同的约定。如果它回答你的问题,你能标记这是答案。它不会浪费别人的时间。 – Skeptor

+0

它并不复杂的形式也。我相信他们也与他们的表单组件集成在一起。我从来没有在这个框架上工作,所以不确定。如果您遇到麻烦,请回来 – Skeptor