3

Рассмотрим следующий HTML

<some-component [input]="something" (change)="update(event)"></some-component> 

и обновления функции()

update(event) { 
    console.log(event); 
    this.firebaseRef.update(event.$key, event); 
    } 

это журналы:

$exists: function() 
$key: "initial" 
end: "1.20" 
options: Object 
start: "0.20" 
text: "Dit is een test" 

И выбрасывает эту ошибку

Firebase.update не удались: Первый аргумент содержит функцию в свойстве

Как передать данные из даже без доллара знак приставочных свойств, которые были прилагаемых угловым? Я бы предпочел сделать это без ручного построения нового объекта данных.

+1

Технически говоря, проблема не в $ собственность, но 'function' собственность. Вы можете либо «удалить» нежелательные свойства из объекта, либо создать новый без них, это зависит от вас. – estus

ответ

2

Это не очень хорошая идеология, но вы можете прокручивать свойства объекта и фильтровать те, которые не начинаются с $, или же являются функциями. Но я рекомендую вам изменить способ отправки данных в обработчик, поэтому вам не нужно санировать необычные случаи.

function getObjectWithoutDollarSignNameAndFunctions(obj){ 
 

 
    var keys = Object.keys(obj).filter(function(key){ 
 
    return typeof obj[key] !== 'function' && key.indexOf('$') !== 0; 
 
    }); 
 

 
    return keys.map(function(key){ return obj[key] });  
 
} 
 

 
var myObject = { 
 
    $angularKey: 1, 
 
    normalFunction: function(){}, 
 
    normalKey: 1, 
 
    normalKey2: {a:12} 
 
}; 
 

 
var myNewObject = getObjectWithoutDollarSignNameAndFunctions(myObject); 
 

 
console.log(myNewObject);

Смежные вопросы