函数不执行绑定到click事件不会100%执行

时间:2018-02-01 10:25:17

标签: angular

我有一个角度材质自动完成输入,可以在点击时调用自定义函数的地址。但是, 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?

1 个答案:

答案 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> 上添加点击处理程序