В приведенном ниже коде removeSelectedCountry()
следует вызывать, когда элемент span нажимается, а handleKeyDown($event)
следует вызывать, когда на div находится событие keydown.В угловом2 вводит ключевой триггер любое событие click на странице?
@Component({
selector: "wng-country-picker",
template: `
<ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0">
<li *ngFor="let country of selectedCountries">
<span class="Pill Pill--primary" (click)="removeSelectedCountry(country)">
{{ country.name }}
</span>
</li>
</ul>
<div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div>
`,
providers: [CUSTOM_VALUE_ACCESSOR]
})
Но removeSelectedCountry()
вызывается каждый раз, когда вводится клавиша ввода.
Чтобы сделать код работы, мне пришлось изменить событие click на событие mousedown
. Теперь он отлично работает.
Может ли кто-нибудь объяснить, зачем вводить ключ, вызывает событие click?
@Component({
selector: "wng-country-picker",
template: `
<ul class="CountryPicker-selected" *ngIf="selectedCountries.length > 0">
<li *ngFor="let country of selectedCountries">
<span class="Pill Pill--primary" (mousedown)="removeSelectedCountry(country)">
{{ country.name }}
</span>
</li>
</ul>
<div (keydown)="handleKeyDown($event)" class="CountryPicker-input"></div>
`,
providers: [CUSTOM_VALUE_ACCESSOR]
})
Добавление класса snipppet
export class CountryPickerComponent {
private selectedCountries: CountrySummary[] = new Array();
private removeSelectedCountry(country: CountrySummary){
// check if the country exists and remove from selectedCountries
if (this.selectedCountries.filter(ctry => ctry.code === country.code).length > 0)
{
var index = this.selectedCountries.indexOf(country);
this.selectedCountries.splice(index, 1);
this.selectedCountryCodes.splice(index, 1);
}
}
private handleKeyDown(event: any)
{
if (event.keyCode == 13)
{
// action
}
else if (event.keyCode == 40)
{
// action
}
else if (event.keyCode == 38)
{
// action
}
}
Можете ли вы показать свой класс? – NEER
Я столкнулся с той же проблемой: «Кто-нибудь может объяснить, почему ключ ввода будет вызывать событие click?» – Deshak9
У меня такая же проблема, используя фильтрацию ** Keyup ** на ** Enter **. В моем сценарии, похоже, только инициирует событие click в той же реактивной форме. –