Salesforce lightning Salesforce lightning input';s element.set在summer 18发布后不再工作

Salesforce lightning Salesforce lightning input';s element.set在summer 18发布后不再工作,salesforce-lightning,Salesforce Lightning,我正在使用下面的代码片段检查有效的电话号码格式,然后尝试将格式化值设置为当前输入元素。但在summer 18发布后,我无法用新的格式化值设置输入 特斯塔普 <aura:application extends="force:slds"> <lightning:input type="text" label="Num" aura:id="ele" onchange=" {!c.changeNum}" /> </aura:application&

我正在使用下面的代码片段检查有效的电话号码格式,然后尝试将格式化值设置为当前输入元素。但在summer 18发布后,我无法用新的格式化值设置输入

特斯塔普

<aura:application extends="force:slds">    
   <lightning:input type="text" label="Num" aura:id="ele" onchange=" 
    {!c.changeNum}" />
 </aura:application>
助手:

({
changeNum : function(component, event) {
    var element = event.getSource();
    var phonenumber = element.get("v.value");        
    if(phonenumber){                
            var updatedValue = phonenumber.replace(/-/g, "");
            if(/^\d{10}$/.test(updatedValue)){ 
                phonenumber = updatedValue.match(new RegExp('\\d{4}$|\\d{3}', 'g')).join("-");
            }
            else{
                var x = phonenumber.replace(/[^0-9._-]/g, "").replace(/ +/, " ");
                phonenumber = x;
               if(!/^[0-9-]+$/.test(phonenumber.slice(-1))){
                    phonenumber = phonenumber.slice(0, -1);
                }
            }
        }
    console.log(phonenumber);   
    element.set('v.value', phonenumber);
}
})

element.set无法更新格式化的值。lightning输入元素仍然能够接受字母表。

我们可以使用

({
handleInputChange : function(component, event) {
    try {           
        var element = event.getSource();
        var inputValue = element.get("v.value");
        var formattedValue;
        var chkPattern = new Promise(
            function (resolve, reject) {
                if (inputValue) {
                    formattedValue = inputValue.replace(/[^0-9-]/g, "").replace(/ +/, " ");                        
                    resolve(formattedValue); // fulfilled
                } else {
                    var reason = new Error('kitten is not happy');
                    reject(reason); // reject
                }

            }
        );

        chkPattern.then(function (fulfilled) { 
            element.set('v.value', fulfilled);
        }).catch(function (error) {                
            console.log(error.message);                
        });
    } catch(e) {
        this.consoleLog(e.stack, true)
    }
}
})

({
handleInputChange : function(component, event) {
    try {           
        var element = event.getSource();
        var inputValue = element.get("v.value");
        var formattedValue;
        var chkPattern = new Promise(
            function (resolve, reject) {
                if (inputValue) {
                    formattedValue = inputValue.replace(/[^0-9-]/g, "").replace(/ +/, " ");                        
                    resolve(formattedValue); // fulfilled
                } else {
                    var reason = new Error('kitten is not happy');
                    reject(reason); // reject
                }

            }
        );

        chkPattern.then(function (fulfilled) { 
            element.set('v.value', fulfilled);
        }).catch(function (error) {                
            console.log(error.message);                
        });
    } catch(e) {
        this.consoleLog(e.stack, true)
    }
}