我有一个角度材质自动完成输入,可以在点击时调用自定义函数的地址。但是, fillAddress 函数在执行默认自动完成行为的100%时间内未执行,我希望不惜一切代价避免这种行为。
这是我的html模板
<mat-form-field>
<input matInput
#autoCompleteAddress
class="full-width"
placeholder="Address"
[matAutocomplete]="auto"
formControlName="inputAddress">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let address of addresses" [value]="address.full_address">
<span (click)="fillAddress(address.full_address, address.address_id); $event.stopPropagation();">{{ address.full_address }}</span>
</mat-option>
</mat-autocomplete>
<mat-error *ngIf="formErrors.inputAddress" class="alert alert-danger">
{{ formErrors.inputAddress }}
</mat-error>
</mat-form-field>
这是我的功能
fillAddress(fullAddress, address_id) {
const strs = fullAddress.split(', ').reverse();
const postcode = strs[0].split(' ').reverse()[0];
const state = strs[0].split(' ').reverse().slice(1).reverse().join(' ');
const city = strs[1];
const address = strs.splice(2).reverse().join(', ');
this.ereturnForm.get('inputState').setValue(state);
this.ereturnForm.get('inputPostalcode').setValue(postcode);
this.ereturnForm.get('inputCity').setValue(city);
this.ereturnForm.get('inputAddress').setValue(address);
this.address_id = address_id;
this.autoCompleteAddress.closePanel();
}
问题:任何想法为什么每次单击span元素时都不会执行fillAddress?
答案 0 :(得分:1)
import java.sql.Date;
.
.
.
StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("dbo.GetErrorandTimestampDetails")
.registerStoredProcedureParameter("IncidentID", Integer.class, ParameterMode.IN)
.registerStoredProcedureParameter("Errorcount", Integer.class, ParameterMode.OUT)
.registerStoredProcedureParameter("timestamp", Date.class, ParameterMode.OUT)
.setParameter("IncidentID", incidentID);
boolean status = storedProcedure.execute();
HashMap returnVal = new HashMap<String,Object>();
returnVal.put("ErrorCount",(Integer)storedProcedure.getOutputParameterValue("Errorcount"));
returnVal.put("TimeStamp", (Date)storedProcedure.getOutputParameterValue("timestamp"));
return returnVal;
尝试在<mat-autocomplete #auto="matAutocomplete">
<mat-option
(click)="fillAddress(address.full_address, address.address_id);
$event.stopPropagation();"
*ngFor="let address of addresses" [value]="address.full_address">
<span>{{ address.full_address }}</span>
</mat-option>
</mat-autocomplete>
上添加点击处理程序