当在Angular中使用{{}}插值绑定时,如果绑定的值是JavaScript对象,并且没有定义toString()方法,则Angular默认会将其转换为[Object Object]字符串。为了解决这个问题,可以在对象的原型上定义toString()方法,以返回对象的所需字符串表示形式。例如:
在组件中定义对象:
foo = {
name: 'John',
age: 30
};
要在Angular模板中显示此对象的字符串表示形式,请将toString()方法定义为:
Object.prototype.toString = function() {
var str = '';
for (var prop in this) {
if (this.hasOwnProperty(prop)) {
str += prop + ': ' + this[prop] + ', ';
}
}
return '{' + str.slice(0, -2) + '}';
};
这将返回这样的字符串:{name: John, age: 30}。现在,使用{{foo}}插值绑定时,Angular将显示正确的值。