2016-07-27 47 views
8

我有一个小的表达,以检查2个对象是否是不同的或没有,为了显示这个元素(通过添加类名):在Angular2模板表达透过JSON.stringify

<div ngClass='{{JSON.stringify(obj1) != JSON.stringify(obj2) ? "div-show" : ""}}'></div> 

问题是我得到这个错误: Cannot read property 'stringify' of undefined

我需要一种解决方法或适当的解决方案(如果可用)。谢谢。 PS:我使用JSON.stringify()来比较2个简单的对象,这里没有什么奇怪的东西。

回答

18

模板代码不能访问所有的JavaScript,只有组件的属性和方法。我认为这将是最好的组件上创建一个“字符串化”的方法,但你可以只设置一个JSON属性:

public constructor() { 
    this.JSON = JSON; 
} 

此外,我觉得你的表情是倒退。 NgClass需要的CSS类的属性名和真/假值告诉类是否是元素,它需要在括号:

<div [ngClass]="{'div-show': JSON.stringify(obj1) != JSON.stringify(obj2)}"></div> 
+0

感谢您的回答。你的回答和@ rashfmnb's几乎是一样的。关于另外,我经历了很多'ngClass'的情况,我发现我的做法是使用'ngClass'的最坚实的方法。当然,你的作品完美无瑕,但在某些情况下,它与我的相比并非如此。 [ngClass]不能工作的一个例子: '

'。如果我错了,请随时纠正我。 –

3

你可以在你的组件这样做。

myjson:any=JSON; 

和你视图做这样的

<div ngClass='{{myjson.stringify(obj1) != myjson.stringify(obj2) ? "div-show" : ""}}'></div> 
+0

谢谢回答。你的代码完美地工作,但@Jason Goemaat的答案似乎对我来说更清洁。 –

+0

我的朋友没问题 – rashfmnb