2017-06-18 49 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